#run.taxon <-  "carnivores" #"ungulates"
this.rank <- "species" #"genus" "species"
interval.type <- "nalma" #"nalma" "bins

bmBreaks_herb <- c(-Inf, 0.69897, 1.39794, 2.176091, 2.69897, Inf) #Janis 2000  max(measure.mat$bodyMass, na.rm=TRUE)
bmBreaks_pred <- c(-Inf, 0, 0.845098, 1.322219, 2, Inf) 

#do.pred.diet <- TRUE
#diet.type <- c("hypercarnivore") #, "mesocarnivore", "hypocarnivore")

save.pathname <- "~/Dropbox/Code/R/Results/"

#if you want to load a repIntOccs or repIntTaxa from file put the pathname as this object.  otherwise keep as NUll to make a new repIntOccs and repIntTaxa using the settings below
repIntLoad <- 
  ####Full runs
  #"/Users/emdoughty/Dropbox/Code/R/Results/repIntMaster__this.rank=species_timebin=2Mabins_start=64Ma_end=0Ma_SampleStandardized=TRUE_Reps=10000Jonathans_MBP.lan##------ Sun Mar  6 19:30:39 2022 ------##.Rdata"
  
  #"/Users/emdoughty/Dropbox/Code/R/Results/repIntMaster__this.rank=species_timebin=2Mabins_start=64Ma_end=1Ma_SampleStandardized=TRUE_Reps=10000Jonathans_MBP.lan##------ Fri Mar  4 21:58:08 2022 ------##.Rdata"

"/Users/emdoughty/Dropbox/Code/R/Results/repIntMaster__this.rank=species_timebin=nalma_SampleStandardized=TRUE_Reps=10000Jonathans_MBP.lan##------ Thu Mar  3 18:05:02 2022 ------##.Rdata"
  

##### Predator diet repInt
#"/Users/emdoughty/Dropbox/Code/R/Results/repIntMaster__this.rank=species_timebin=2Mabins_start=34_end=0_SampleStandardized=TRUE_Reps=10000Jonathans_MBP.lan##------ Fri Mar 11 00:55:37 2022 ------##.Rdata"

#"/Users/emdoughty/Dropbox/Code/R/Results/repIntMaster__this.rank=species_timebin=nalma_34to0_SampleStandardized=TRUE_Reps=10000Jonathans_MBP.lan##------ Fri Mar 11 02:05:09 2022 ------##.Rdata"
occs <- read.csv("http://paleobiodb.org/data1.2/occs/list.csv?base_name=Mammalia&continent=NOA&max_ma=100&min_ma=0&timerule=overlap&show=full&limit=all", stringsAsFactors=TRUE, strip.white=TRUE)
occs <- occs[!occs$order %in% c("Cetacea", "Desmostylia", "Sirenia"), ]
occs <- occs[!occs$family %in% c("Allodelphinidae", "Balaenidae", "Balaenopteridae", "Delphinidae", "Desmatophocidae", "Desmostylidae", 
                                 "Didelphidae","Dugongidae","Enaliarctidae", "Eschrichtiidae","Iniidae", "Kentriodontidae", "Kogiidae", 
                                 "Odobenidae", "Otariidae", "Paleoparadoxiidae", "Panotariidae","Phocidae", "Physeteridae", 
                                 "Platanistidae", "Pontoporiidae", "Protocetidae", "Squalodontidae", "Ziphiidae"), ]
occs$accepted_name <- gsub(pattern = "[[:space:]]", replacement = "_", x = occs$accepted_name)  #replace spaces with underscores
 measure.mat <- getMeasureMatWithBodyMasses()
## [1] "Building measurement matrix..."
##  **** Getting current taxon from PaleoBioDB  1 of 1018 (0.1%)
    **** Getting current taxon from PaleoBioDB  2 of 1018 (0.2%)
    **** Getting current taxon from PaleoBioDB  3 of 1018 (0.3%)
    **** Getting current taxon from PaleoBioDB  4 of 1018 (0.4%)
    **** Getting current taxon from PaleoBioDB  5 of 1018 (0.5%)
    **** Getting current taxon from PaleoBioDB  6 of 1018 (0.6%)
    **** Getting current taxon from PaleoBioDB  7 of 1018 (0.7%)
    **** Getting current taxon from PaleoBioDB  8 of 1018 (0.8%)
    **** Getting current taxon from PaleoBioDB  9 of 1018 (0.9%)
    **** Getting current taxon from PaleoBioDB  10 of 1018 (1%)
    **** Getting current taxon from PaleoBioDB  11 of 1018 (1.1%)
    **** Getting current taxon from PaleoBioDB  12 of 1018 (1.2%)
    **** Getting current taxon from PaleoBioDB  13 of 1018 (1.3%)
    **** Getting current taxon from PaleoBioDB  14 of 1018 (1.4%)
    **** Getting current taxon from PaleoBioDB  15 of 1018 (1.5%)
    **** Getting current taxon from PaleoBioDB  16 of 1018 (1.6%)
    **** Getting current taxon from PaleoBioDB  17 of 1018 (1.7%)
    **** Getting current taxon from PaleoBioDB  18 of 1018 (1.8%)
    **** Getting current taxon from PaleoBioDB  19 of 1018 (1.9%)
    **** Getting current taxon from PaleoBioDB  20 of 1018 (2%)
    **** Getting current taxon from PaleoBioDB  21 of 1018 (2.1%)
    **** Getting current taxon from PaleoBioDB  22 of 1018 (2.2%)
    **** Getting current taxon from PaleoBioDB  23 of 1018 (2.3%)
    **** Getting current taxon from PaleoBioDB  24 of 1018 (2.4%)
    **** Getting current taxon from PaleoBioDB  25 of 1018 (2.5%)
    **** Getting current taxon from PaleoBioDB  26 of 1018 (2.6%)
    **** Getting current taxon from PaleoBioDB  27 of 1018 (2.7%)
    **** Getting current taxon from PaleoBioDB  28 of 1018 (2.8%)
    **** Getting current taxon from PaleoBioDB  29 of 1018 (2.8%)
    **** Getting current taxon from PaleoBioDB  30 of 1018 (2.9%)
    **** Getting current taxon from PaleoBioDB  31 of 1018 (3%)
    **** Getting current taxon from PaleoBioDB  32 of 1018 (3.1%)
    **** Getting current taxon from PaleoBioDB  33 of 1018 (3.2%)
    **** Getting current taxon from PaleoBioDB  34 of 1018 (3.3%)
    **** Getting current taxon from PaleoBioDB  35 of 1018 (3.4%)
    **** Getting current taxon from PaleoBioDB  36 of 1018 (3.5%)
    **** Getting current taxon from PaleoBioDB  37 of 1018 (3.6%)
    **** Getting current taxon from PaleoBioDB  38 of 1018 (3.7%)
    **** Getting current taxon from PaleoBioDB  39 of 1018 (3.8%)
    **** Getting current taxon from PaleoBioDB  40 of 1018 (3.9%)
    **** Getting current taxon from PaleoBioDB  41 of 1018 (4%)
    **** Getting current taxon from PaleoBioDB  42 of 1018 (4.1%)
    **** Getting current taxon from PaleoBioDB  43 of 1018 (4.2%)
    **** Getting current taxon from PaleoBioDB  44 of 1018 (4.3%)
    **** Getting current taxon from PaleoBioDB  45 of 1018 (4.4%)
    **** Getting current taxon from PaleoBioDB  46 of 1018 (4.5%)
    **** Getting current taxon from PaleoBioDB  47 of 1018 (4.6%)
    **** Getting current taxon from PaleoBioDB  48 of 1018 (4.7%)
    **** Getting current taxon from PaleoBioDB  49 of 1018 (4.8%)
    **** Getting current taxon from PaleoBioDB  50 of 1018 (4.9%)
    **** Getting current taxon from PaleoBioDB  51 of 1018 (5%)
    **** Getting current taxon from PaleoBioDB  52 of 1018 (5.1%)
    **** Getting current taxon from PaleoBioDB  53 of 1018 (5.2%)
    **** Getting current taxon from PaleoBioDB  54 of 1018 (5.3%)
    **** Getting current taxon from PaleoBioDB  55 of 1018 (5.4%)
    **** Getting current taxon from PaleoBioDB  56 of 1018 (5.5%)
    **** Getting current taxon from PaleoBioDB  57 of 1018 (5.6%)
    **** Getting current taxon from PaleoBioDB  58 of 1018 (5.7%)
    **** Getting current taxon from PaleoBioDB  59 of 1018 (5.8%)
    **** Getting current taxon from PaleoBioDB  60 of 1018 (5.9%)
    **** Getting current taxon from PaleoBioDB  61 of 1018 (6%)
    **** Getting current taxon from PaleoBioDB  62 of 1018 (6.1%)
    **** Getting current taxon from PaleoBioDB  63 of 1018 (6.2%)
    **** Getting current taxon from PaleoBioDB  64 of 1018 (6.3%)
    **** Getting current taxon from PaleoBioDB  65 of 1018 (6.4%)
    **** Getting current taxon from PaleoBioDB  66 of 1018 (6.5%)
    **** Getting current taxon from PaleoBioDB  67 of 1018 (6.6%)
    **** Getting current taxon from PaleoBioDB  68 of 1018 (6.7%)
    **** Getting current taxon from PaleoBioDB  69 of 1018 (6.8%)
    **** Getting current taxon from PaleoBioDB  70 of 1018 (6.9%)
    **** Getting current taxon from PaleoBioDB  71 of 1018 (7%)
    **** Getting current taxon from PaleoBioDB  72 of 1018 (7.1%)
    **** Getting current taxon from PaleoBioDB  73 of 1018 (7.2%)
    **** Getting current taxon from PaleoBioDB  74 of 1018 (7.3%)
    **** Getting current taxon from PaleoBioDB  75 of 1018 (7.4%)
    **** Getting current taxon from PaleoBioDB  76 of 1018 (7.5%)
    **** Getting current taxon from PaleoBioDB  77 of 1018 (7.6%)
    **** Getting current taxon from PaleoBioDB  78 of 1018 (7.7%)
    **** Getting current taxon from PaleoBioDB  79 of 1018 (7.8%)
    **** Getting current taxon from PaleoBioDB  80 of 1018 (7.9%)
    **** Getting current taxon from PaleoBioDB  81 of 1018 (8%)
    **** Getting current taxon from PaleoBioDB  82 of 1018 (8.1%)
    **** Getting current taxon from PaleoBioDB  83 of 1018 (8.2%)
    **** Getting current taxon from PaleoBioDB  84 of 1018 (8.3%)
    **** Getting current taxon from PaleoBioDB  85 of 1018 (8.3%)
    **** Getting current taxon from PaleoBioDB  86 of 1018 (8.4%)
    **** Getting current taxon from PaleoBioDB  87 of 1018 (8.5%)
    **** Getting current taxon from PaleoBioDB  88 of 1018 (8.6%)
    **** Getting current taxon from PaleoBioDB  89 of 1018 (8.7%)
    **** Getting current taxon from PaleoBioDB  90 of 1018 (8.8%)
    **** Getting current taxon from PaleoBioDB  91 of 1018 (8.9%)
    **** Getting current taxon from PaleoBioDB  92 of 1018 (9%)
    **** Getting current taxon from PaleoBioDB  93 of 1018 (9.1%)
    **** Getting current taxon from PaleoBioDB  94 of 1018 (9.2%)
    **** Getting current taxon from PaleoBioDB  95 of 1018 (9.3%)
    **** Getting current taxon from PaleoBioDB  96 of 1018 (9.4%)
    **** Getting current taxon from PaleoBioDB  97 of 1018 (9.5%)
    **** Getting current taxon from PaleoBioDB  98 of 1018 (9.6%)
    **** Getting current taxon from PaleoBioDB  99 of 1018 (9.7%)
    **** Getting current taxon from PaleoBioDB  100 of 1018 (9.8%)
    **** Getting current taxon from PaleoBioDB  101 of 1018 (9.9%)
    **** Getting current taxon from PaleoBioDB  102 of 1018 (10%)
    **** Getting current taxon from PaleoBioDB  103 of 1018 (10.1%)
    **** Getting current taxon from PaleoBioDB  104 of 1018 (10.2%)
    **** Getting current taxon from PaleoBioDB  105 of 1018 (10.3%)
    **** Getting current taxon from PaleoBioDB  106 of 1018 (10.4%)
    **** Getting current taxon from PaleoBioDB  107 of 1018 (10.5%)
    **** Getting current taxon from PaleoBioDB  108 of 1018 (10.6%)
    **** Getting current taxon from PaleoBioDB  109 of 1018 (10.7%)
    **** Getting current taxon from PaleoBioDB  110 of 1018 (10.8%)
    **** Getting current taxon from PaleoBioDB  111 of 1018 (10.9%)
    **** Getting current taxon from PaleoBioDB  112 of 1018 (11%)
    **** Getting current taxon from PaleoBioDB  113 of 1018 (11.1%)
    **** Getting current taxon from PaleoBioDB  114 of 1018 (11.2%)
    **** Getting current taxon from PaleoBioDB  115 of 1018 (11.3%)
    **** Getting current taxon from PaleoBioDB  116 of 1018 (11.4%)
    **** Getting current taxon from PaleoBioDB  117 of 1018 (11.5%)
    **** Getting current taxon from PaleoBioDB  118 of 1018 (11.6%)
    **** Getting current taxon from PaleoBioDB  119 of 1018 (11.7%)
    **** Getting current taxon from PaleoBioDB  120 of 1018 (11.8%)
    **** Getting current taxon from PaleoBioDB  121 of 1018 (11.9%)
    **** Getting current taxon from PaleoBioDB  122 of 1018 (12%)
    **** Getting current taxon from PaleoBioDB  123 of 1018 (12.1%)
    **** Getting current taxon from PaleoBioDB  124 of 1018 (12.2%)
    **** Getting current taxon from PaleoBioDB  125 of 1018 (12.3%)
    **** Getting current taxon from PaleoBioDB  126 of 1018 (12.4%)
    **** Getting current taxon from PaleoBioDB  127 of 1018 (12.5%)
    **** Getting current taxon from PaleoBioDB  128 of 1018 (12.6%)
    **** Getting current taxon from PaleoBioDB  129 of 1018 (12.7%)
    **** Getting current taxon from PaleoBioDB  130 of 1018 (12.8%)
    **** Getting current taxon from PaleoBioDB  131 of 1018 (12.9%)
    **** Getting current taxon from PaleoBioDB  132 of 1018 (13%)
    **** Getting current taxon from PaleoBioDB  133 of 1018 (13.1%)
    **** Getting current taxon from PaleoBioDB  134 of 1018 (13.2%)
    **** Getting current taxon from PaleoBioDB  135 of 1018 (13.3%)
    **** Getting current taxon from PaleoBioDB  136 of 1018 (13.4%)
    **** Getting current taxon from PaleoBioDB  137 of 1018 (13.5%)
    **** Getting current taxon from PaleoBioDB  138 of 1018 (13.6%)
    **** Getting current taxon from PaleoBioDB  139 of 1018 (13.7%)
    **** Getting current taxon from PaleoBioDB  140 of 1018 (13.8%)
    **** Getting current taxon from PaleoBioDB  141 of 1018 (13.9%)
    **** Getting current taxon from PaleoBioDB  142 of 1018 (13.9%)
    **** Getting current taxon from PaleoBioDB  143 of 1018 (14%)
    **** Getting current taxon from PaleoBioDB  144 of 1018 (14.1%)
    **** Getting current taxon from PaleoBioDB  145 of 1018 (14.2%)
    **** Getting current taxon from PaleoBioDB  146 of 1018 (14.3%)
    **** Getting current taxon from PaleoBioDB  147 of 1018 (14.4%)
    **** Getting current taxon from PaleoBioDB  148 of 1018 (14.5%)
    **** Getting current taxon from PaleoBioDB  149 of 1018 (14.6%)
    **** Getting current taxon from PaleoBioDB  150 of 1018 (14.7%)
    **** Getting current taxon from PaleoBioDB  151 of 1018 (14.8%)
    **** Getting current taxon from PaleoBioDB  152 of 1018 (14.9%)
    **** Getting current taxon from PaleoBioDB  153 of 1018 (15%)
    **** Getting current taxon from PaleoBioDB  154 of 1018 (15.1%)
    **** Getting current taxon from PaleoBioDB  155 of 1018 (15.2%)
    **** Getting current taxon from PaleoBioDB  156 of 1018 (15.3%)
    **** Getting current taxon from PaleoBioDB  157 of 1018 (15.4%)
    **** Getting current taxon from PaleoBioDB  158 of 1018 (15.5%)
    **** Getting current taxon from PaleoBioDB  159 of 1018 (15.6%)
    **** Getting current taxon from PaleoBioDB  160 of 1018 (15.7%)
    **** Getting current taxon from PaleoBioDB  161 of 1018 (15.8%)
    **** Getting current taxon from PaleoBioDB  162 of 1018 (15.9%)
    **** Getting current taxon from PaleoBioDB  163 of 1018 (16%)
    **** Getting current taxon from PaleoBioDB  164 of 1018 (16.1%)
    **** Getting current taxon from PaleoBioDB  165 of 1018 (16.2%)
    **** Getting current taxon from PaleoBioDB  166 of 1018 (16.3%)
    **** Getting current taxon from PaleoBioDB  167 of 1018 (16.4%)
    **** Getting current taxon from PaleoBioDB  168 of 1018 (16.5%)
    **** Getting current taxon from PaleoBioDB  169 of 1018 (16.6%)
    **** Getting current taxon from PaleoBioDB  170 of 1018 (16.7%)
    **** Getting current taxon from PaleoBioDB  171 of 1018 (16.8%)
    **** Getting current taxon from PaleoBioDB  172 of 1018 (16.9%)
    **** Getting current taxon from PaleoBioDB  173 of 1018 (17%)
    **** Getting current taxon from PaleoBioDB  174 of 1018 (17.1%)
    **** Getting current taxon from PaleoBioDB  175 of 1018 (17.2%)
    **** Getting current taxon from PaleoBioDB  176 of 1018 (17.3%)
    **** Getting current taxon from PaleoBioDB  177 of 1018 (17.4%)
    **** Getting current taxon from PaleoBioDB  178 of 1018 (17.5%)
    **** Getting current taxon from PaleoBioDB  179 of 1018 (17.6%)
    **** Getting current taxon from PaleoBioDB  180 of 1018 (17.7%)
    **** Getting current taxon from PaleoBioDB  181 of 1018 (17.8%)
    **** Getting current taxon from PaleoBioDB  182 of 1018 (17.9%)
    **** Getting current taxon from PaleoBioDB  183 of 1018 (18%)
    **** Getting current taxon from PaleoBioDB  184 of 1018 (18.1%)
    **** Getting current taxon from PaleoBioDB  185 of 1018 (18.2%)
    **** Getting current taxon from PaleoBioDB  186 of 1018 (18.3%)
    **** Getting current taxon from PaleoBioDB  187 of 1018 (18.4%)
    **** Getting current taxon from PaleoBioDB  188 of 1018 (18.5%)
    **** Getting current taxon from PaleoBioDB  189 of 1018 (18.6%)
    **** Getting current taxon from PaleoBioDB  190 of 1018 (18.7%)
    **** Getting current taxon from PaleoBioDB  191 of 1018 (18.8%)
    **** Getting current taxon from PaleoBioDB  192 of 1018 (18.9%)
    **** Getting current taxon from PaleoBioDB  193 of 1018 (19%)
    **** Getting current taxon from PaleoBioDB  194 of 1018 (19.1%)
    **** Getting current taxon from PaleoBioDB  195 of 1018 (19.2%)
    **** Getting current taxon from PaleoBioDB  196 of 1018 (19.3%)
    **** Getting current taxon from PaleoBioDB  197 of 1018 (19.4%)
    **** Getting current taxon from PaleoBioDB  198 of 1018 (19.4%)
    **** Getting current taxon from PaleoBioDB  199 of 1018 (19.5%)
    **** Getting current taxon from PaleoBioDB  200 of 1018 (19.6%)
    **** Getting current taxon from PaleoBioDB  201 of 1018 (19.7%)
    **** Getting current taxon from PaleoBioDB  202 of 1018 (19.8%)
    **** Getting current taxon from PaleoBioDB  203 of 1018 (19.9%)
    **** Getting current taxon from PaleoBioDB  204 of 1018 (20%)
    **** Getting current taxon from PaleoBioDB  205 of 1018 (20.1%)
    **** Getting current taxon from PaleoBioDB  206 of 1018 (20.2%)
    **** Getting current taxon from PaleoBioDB  207 of 1018 (20.3%)
    **** Getting current taxon from PaleoBioDB  208 of 1018 (20.4%)
    **** Getting current taxon from PaleoBioDB  209 of 1018 (20.5%)
## Warning in file(file, "rt"): URL 'https://paleobiodb.org/data1.2/taxa/
## single.csv?name=Desmatippus%20avus': status was 'Couldn't connect to
## server'
## Error in file(file, "rt") : 
##   cannot open the connection to 'https://paleobiodb.org/data1.2/taxa/single.csv?name=Desmatippus%20avus'
## Warning: The taxon "Desmatippus avus" cannot be found in the Paleobiology
## Database
##  **** Getting current taxon from PaleoBioDB  210 of 1018 (20.6%)
    **** Getting current taxon from PaleoBioDB  211 of 1018 (20.7%)
    **** Getting current taxon from PaleoBioDB  212 of 1018 (20.8%)
    **** Getting current taxon from PaleoBioDB  213 of 1018 (20.9%)
    **** Getting current taxon from PaleoBioDB  214 of 1018 (21%)
    **** Getting current taxon from PaleoBioDB  215 of 1018 (21.1%)
    **** Getting current taxon from PaleoBioDB  216 of 1018 (21.2%)
    **** Getting current taxon from PaleoBioDB  217 of 1018 (21.3%)
    **** Getting current taxon from PaleoBioDB  218 of 1018 (21.4%)
    **** Getting current taxon from PaleoBioDB  219 of 1018 (21.5%)
    **** Getting current taxon from PaleoBioDB  220 of 1018 (21.6%)
    **** Getting current taxon from PaleoBioDB  221 of 1018 (21.7%)
    **** Getting current taxon from PaleoBioDB  222 of 1018 (21.8%)
    **** Getting current taxon from PaleoBioDB  223 of 1018 (21.9%)
    **** Getting current taxon from PaleoBioDB  224 of 1018 (22%)
    **** Getting current taxon from PaleoBioDB  225 of 1018 (22.1%)
    **** Getting current taxon from PaleoBioDB  226 of 1018 (22.2%)
    **** Getting current taxon from PaleoBioDB  227 of 1018 (22.3%)
    **** Getting current taxon from PaleoBioDB  228 of 1018 (22.4%)
    **** Getting current taxon from PaleoBioDB  229 of 1018 (22.5%)
    **** Getting current taxon from PaleoBioDB  230 of 1018 (22.6%)
    **** Getting current taxon from PaleoBioDB  231 of 1018 (22.7%)
    **** Getting current taxon from PaleoBioDB  232 of 1018 (22.8%)
    **** Getting current taxon from PaleoBioDB  233 of 1018 (22.9%)
    **** Getting current taxon from PaleoBioDB  234 of 1018 (23%)
    **** Getting current taxon from PaleoBioDB  235 of 1018 (23.1%)
    **** Getting current taxon from PaleoBioDB  236 of 1018 (23.2%)
    **** Getting current taxon from PaleoBioDB  237 of 1018 (23.3%)
    **** Getting current taxon from PaleoBioDB  238 of 1018 (23.4%)
    **** Getting current taxon from PaleoBioDB  239 of 1018 (23.5%)
    **** Getting current taxon from PaleoBioDB  240 of 1018 (23.6%)
    **** Getting current taxon from PaleoBioDB  241 of 1018 (23.7%)
    **** Getting current taxon from PaleoBioDB  242 of 1018 (23.8%)
    **** Getting current taxon from PaleoBioDB  243 of 1018 (23.9%)
    **** Getting current taxon from PaleoBioDB  244 of 1018 (24%)
    **** Getting current taxon from PaleoBioDB  245 of 1018 (24.1%)
    **** Getting current taxon from PaleoBioDB  246 of 1018 (24.2%)
    **** Getting current taxon from PaleoBioDB  247 of 1018 (24.3%)
    **** Getting current taxon from PaleoBioDB  248 of 1018 (24.4%)
    **** Getting current taxon from PaleoBioDB  249 of 1018 (24.5%)
    **** Getting current taxon from PaleoBioDB  250 of 1018 (24.6%)
    **** Getting current taxon from PaleoBioDB  251 of 1018 (24.7%)
    **** Getting current taxon from PaleoBioDB  252 of 1018 (24.8%)
    **** Getting current taxon from PaleoBioDB  253 of 1018 (24.9%)
    **** Getting current taxon from PaleoBioDB  254 of 1018 (25%)
    **** Getting current taxon from PaleoBioDB  255 of 1018 (25%)
    **** Getting current taxon from PaleoBioDB  256 of 1018 (25.1%)
    **** Getting current taxon from PaleoBioDB  257 of 1018 (25.2%)
    **** Getting current taxon from PaleoBioDB  258 of 1018 (25.3%)
    **** Getting current taxon from PaleoBioDB  259 of 1018 (25.4%)
    **** Getting current taxon from PaleoBioDB  260 of 1018 (25.5%)
    **** Getting current taxon from PaleoBioDB  261 of 1018 (25.6%)
    **** Getting current taxon from PaleoBioDB  262 of 1018 (25.7%)
    **** Getting current taxon from PaleoBioDB  263 of 1018 (25.8%)
    **** Getting current taxon from PaleoBioDB  264 of 1018 (25.9%)
    **** Getting current taxon from PaleoBioDB  265 of 1018 (26%)
    **** Getting current taxon from PaleoBioDB  266 of 1018 (26.1%)
    **** Getting current taxon from PaleoBioDB  267 of 1018 (26.2%)
    **** Getting current taxon from PaleoBioDB  268 of 1018 (26.3%)
    **** Getting current taxon from PaleoBioDB  269 of 1018 (26.4%)
    **** Getting current taxon from PaleoBioDB  270 of 1018 (26.5%)
    **** Getting current taxon from PaleoBioDB  271 of 1018 (26.6%)
    **** Getting current taxon from PaleoBioDB  272 of 1018 (26.7%)
    **** Getting current taxon from PaleoBioDB  273 of 1018 (26.8%)
    **** Getting current taxon from PaleoBioDB  274 of 1018 (26.9%)
    **** Getting current taxon from PaleoBioDB  275 of 1018 (27%)
    **** Getting current taxon from PaleoBioDB  276 of 1018 (27.1%)
    **** Getting current taxon from PaleoBioDB  277 of 1018 (27.2%)
    **** Getting current taxon from PaleoBioDB  278 of 1018 (27.3%)
    **** Getting current taxon from PaleoBioDB  279 of 1018 (27.4%)
    **** Getting current taxon from PaleoBioDB  280 of 1018 (27.5%)
    **** Getting current taxon from PaleoBioDB  281 of 1018 (27.6%)
    **** Getting current taxon from PaleoBioDB  282 of 1018 (27.7%)
    **** Getting current taxon from PaleoBioDB  283 of 1018 (27.8%)
    **** Getting current taxon from PaleoBioDB  284 of 1018 (27.9%)
    **** Getting current taxon from PaleoBioDB  285 of 1018 (28%)
    **** Getting current taxon from PaleoBioDB  286 of 1018 (28.1%)
    **** Getting current taxon from PaleoBioDB  287 of 1018 (28.2%)
    **** Getting current taxon from PaleoBioDB  288 of 1018 (28.3%)
    **** Getting current taxon from PaleoBioDB  289 of 1018 (28.4%)
    **** Getting current taxon from PaleoBioDB  290 of 1018 (28.5%)
    **** Getting current taxon from PaleoBioDB  291 of 1018 (28.6%)
    **** Getting current taxon from PaleoBioDB  292 of 1018 (28.7%)
    **** Getting current taxon from PaleoBioDB  293 of 1018 (28.8%)
    **** Getting current taxon from PaleoBioDB  294 of 1018 (28.9%)
    **** Getting current taxon from PaleoBioDB  295 of 1018 (29%)
    **** Getting current taxon from PaleoBioDB  296 of 1018 (29.1%)
    **** Getting current taxon from PaleoBioDB  297 of 1018 (29.2%)
    **** Getting current taxon from PaleoBioDB  298 of 1018 (29.3%)
    **** Getting current taxon from PaleoBioDB  299 of 1018 (29.4%)
    **** Getting current taxon from PaleoBioDB  300 of 1018 (29.5%)
    **** Getting current taxon from PaleoBioDB  301 of 1018 (29.6%)
    **** Getting current taxon from PaleoBioDB  302 of 1018 (29.7%)
    **** Getting current taxon from PaleoBioDB  303 of 1018 (29.8%)
    **** Getting current taxon from PaleoBioDB  304 of 1018 (29.9%)
    **** Getting current taxon from PaleoBioDB  305 of 1018 (30%)
    **** Getting current taxon from PaleoBioDB  306 of 1018 (30.1%)
    **** Getting current taxon from PaleoBioDB  307 of 1018 (30.2%)
    **** Getting current taxon from PaleoBioDB  308 of 1018 (30.3%)
    **** Getting current taxon from PaleoBioDB  309 of 1018 (30.4%)
    **** Getting current taxon from PaleoBioDB  310 of 1018 (30.5%)
    **** Getting current taxon from PaleoBioDB  311 of 1018 (30.6%)
    **** Getting current taxon from PaleoBioDB  312 of 1018 (30.6%)
    **** Getting current taxon from PaleoBioDB  313 of 1018 (30.7%)
    **** Getting current taxon from PaleoBioDB  314 of 1018 (30.8%)
    **** Getting current taxon from PaleoBioDB  315 of 1018 (30.9%)
    **** Getting current taxon from PaleoBioDB  316 of 1018 (31%)
    **** Getting current taxon from PaleoBioDB  317 of 1018 (31.1%)
    **** Getting current taxon from PaleoBioDB  318 of 1018 (31.2%)
    **** Getting current taxon from PaleoBioDB  319 of 1018 (31.3%)
    **** Getting current taxon from PaleoBioDB  320 of 1018 (31.4%)
    **** Getting current taxon from PaleoBioDB  321 of 1018 (31.5%)
    **** Getting current taxon from PaleoBioDB  322 of 1018 (31.6%)
    **** Getting current taxon from PaleoBioDB  323 of 1018 (31.7%)
    **** Getting current taxon from PaleoBioDB  324 of 1018 (31.8%)
    **** Getting current taxon from PaleoBioDB  325 of 1018 (31.9%)
    **** Getting current taxon from PaleoBioDB  326 of 1018 (32%)
    **** Getting current taxon from PaleoBioDB  327 of 1018 (32.1%)
    **** Getting current taxon from PaleoBioDB  328 of 1018 (32.2%)
    **** Getting current taxon from PaleoBioDB  329 of 1018 (32.3%)
    **** Getting current taxon from PaleoBioDB  330 of 1018 (32.4%)
    **** Getting current taxon from PaleoBioDB  331 of 1018 (32.5%)
    **** Getting current taxon from PaleoBioDB  332 of 1018 (32.6%)
    **** Getting current taxon from PaleoBioDB  333 of 1018 (32.7%)
    **** Getting current taxon from PaleoBioDB  334 of 1018 (32.8%)
    **** Getting current taxon from PaleoBioDB  335 of 1018 (32.9%)
    **** Getting current taxon from PaleoBioDB  336 of 1018 (33%)
    **** Getting current taxon from PaleoBioDB  337 of 1018 (33.1%)
    **** Getting current taxon from PaleoBioDB  338 of 1018 (33.2%)
    **** Getting current taxon from PaleoBioDB  339 of 1018 (33.3%)
    **** Getting current taxon from PaleoBioDB  340 of 1018 (33.4%)
    **** Getting current taxon from PaleoBioDB  341 of 1018 (33.5%)
    **** Getting current taxon from PaleoBioDB  342 of 1018 (33.6%)
    **** Getting current taxon from PaleoBioDB  343 of 1018 (33.7%)
    **** Getting current taxon from PaleoBioDB  344 of 1018 (33.8%)
    **** Getting current taxon from PaleoBioDB  345 of 1018 (33.9%)
    **** Getting current taxon from PaleoBioDB  346 of 1018 (34%)
    **** Getting current taxon from PaleoBioDB  347 of 1018 (34.1%)
    **** Getting current taxon from PaleoBioDB  348 of 1018 (34.2%)
    **** Getting current taxon from PaleoBioDB  349 of 1018 (34.3%)
    **** Getting current taxon from PaleoBioDB  350 of 1018 (34.4%)
    **** Getting current taxon from PaleoBioDB  351 of 1018 (34.5%)
    **** Getting current taxon from PaleoBioDB  352 of 1018 (34.6%)
    **** Getting current taxon from PaleoBioDB  353 of 1018 (34.7%)
    **** Getting current taxon from PaleoBioDB  354 of 1018 (34.8%)
    **** Getting current taxon from PaleoBioDB  355 of 1018 (34.9%)
    **** Getting current taxon from PaleoBioDB  356 of 1018 (35%)
    **** Getting current taxon from PaleoBioDB  357 of 1018 (35.1%)
    **** Getting current taxon from PaleoBioDB  358 of 1018 (35.2%)
    **** Getting current taxon from PaleoBioDB  359 of 1018 (35.3%)
    **** Getting current taxon from PaleoBioDB  360 of 1018 (35.4%)
    **** Getting current taxon from PaleoBioDB  361 of 1018 (35.5%)
    **** Getting current taxon from PaleoBioDB  362 of 1018 (35.6%)
    **** Getting current taxon from PaleoBioDB  363 of 1018 (35.7%)
    **** Getting current taxon from PaleoBioDB  364 of 1018 (35.8%)
    **** Getting current taxon from PaleoBioDB  365 of 1018 (35.9%)
    **** Getting current taxon from PaleoBioDB  366 of 1018 (36%)
    **** Getting current taxon from PaleoBioDB  367 of 1018 (36.1%)
    **** Getting current taxon from PaleoBioDB  368 of 1018 (36.1%)
    **** Getting current taxon from PaleoBioDB  369 of 1018 (36.2%)
    **** Getting current taxon from PaleoBioDB  370 of 1018 (36.3%)
    **** Getting current taxon from PaleoBioDB  371 of 1018 (36.4%)
    **** Getting current taxon from PaleoBioDB  372 of 1018 (36.5%)
    **** Getting current taxon from PaleoBioDB  373 of 1018 (36.6%)
    **** Getting current taxon from PaleoBioDB  374 of 1018 (36.7%)
    **** Getting current taxon from PaleoBioDB  375 of 1018 (36.8%)
    **** Getting current taxon from PaleoBioDB  376 of 1018 (36.9%)
    **** Getting current taxon from PaleoBioDB  377 of 1018 (37%)
    **** Getting current taxon from PaleoBioDB  378 of 1018 (37.1%)
    **** Getting current taxon from PaleoBioDB  379 of 1018 (37.2%)
    **** Getting current taxon from PaleoBioDB  380 of 1018 (37.3%)
    **** Getting current taxon from PaleoBioDB  381 of 1018 (37.4%)
    **** Getting current taxon from PaleoBioDB  382 of 1018 (37.5%)
    **** Getting current taxon from PaleoBioDB  383 of 1018 (37.6%)
    **** Getting current taxon from PaleoBioDB  384 of 1018 (37.7%)
    **** Getting current taxon from PaleoBioDB  385 of 1018 (37.8%)
    **** Getting current taxon from PaleoBioDB  386 of 1018 (37.9%)
    **** Getting current taxon from PaleoBioDB  387 of 1018 (38%)
    **** Getting current taxon from PaleoBioDB  388 of 1018 (38.1%)
    **** Getting current taxon from PaleoBioDB  389 of 1018 (38.2%)
    **** Getting current taxon from PaleoBioDB  390 of 1018 (38.3%)
    **** Getting current taxon from PaleoBioDB  391 of 1018 (38.4%)
    **** Getting current taxon from PaleoBioDB  392 of 1018 (38.5%)
    **** Getting current taxon from PaleoBioDB  393 of 1018 (38.6%)
    **** Getting current taxon from PaleoBioDB  394 of 1018 (38.7%)
    **** Getting current taxon from PaleoBioDB  395 of 1018 (38.8%)
    **** Getting current taxon from PaleoBioDB  396 of 1018 (38.9%)
    **** Getting current taxon from PaleoBioDB  397 of 1018 (39%)
    **** Getting current taxon from PaleoBioDB  398 of 1018 (39.1%)
    **** Getting current taxon from PaleoBioDB  399 of 1018 (39.2%)
    **** Getting current taxon from PaleoBioDB  400 of 1018 (39.3%)
    **** Getting current taxon from PaleoBioDB  401 of 1018 (39.4%)
    **** Getting current taxon from PaleoBioDB  402 of 1018 (39.5%)
    **** Getting current taxon from PaleoBioDB  403 of 1018 (39.6%)
    **** Getting current taxon from PaleoBioDB  404 of 1018 (39.7%)
    **** Getting current taxon from PaleoBioDB  405 of 1018 (39.8%)
    **** Getting current taxon from PaleoBioDB  406 of 1018 (39.9%)
    **** Getting current taxon from PaleoBioDB  407 of 1018 (40%)
    **** Getting current taxon from PaleoBioDB  408 of 1018 (40.1%)
    **** Getting current taxon from PaleoBioDB  409 of 1018 (40.2%)
    **** Getting current taxon from PaleoBioDB  410 of 1018 (40.3%)
    **** Getting current taxon from PaleoBioDB  411 of 1018 (40.4%)
    **** Getting current taxon from PaleoBioDB  412 of 1018 (40.5%)
    **** Getting current taxon from PaleoBioDB  413 of 1018 (40.6%)
    **** Getting current taxon from PaleoBioDB  414 of 1018 (40.7%)
    **** Getting current taxon from PaleoBioDB  415 of 1018 (40.8%)
    **** Getting current taxon from PaleoBioDB  416 of 1018 (40.9%)
    **** Getting current taxon from PaleoBioDB  417 of 1018 (41%)
    **** Getting current taxon from PaleoBioDB  418 of 1018 (41.1%)
    **** Getting current taxon from PaleoBioDB  419 of 1018 (41.2%)
    **** Getting current taxon from PaleoBioDB  420 of 1018 (41.3%)
    **** Getting current taxon from PaleoBioDB  421 of 1018 (41.4%)
    **** Getting current taxon from PaleoBioDB  422 of 1018 (41.5%)
    **** Getting current taxon from PaleoBioDB  423 of 1018 (41.6%)
    **** Getting current taxon from PaleoBioDB  424 of 1018 (41.7%)
    **** Getting current taxon from PaleoBioDB  425 of 1018 (41.7%)
    **** Getting current taxon from PaleoBioDB  426 of 1018 (41.8%)
    **** Getting current taxon from PaleoBioDB  427 of 1018 (41.9%)
    **** Getting current taxon from PaleoBioDB  428 of 1018 (42%)
    **** Getting current taxon from PaleoBioDB  429 of 1018 (42.1%)
    **** Getting current taxon from PaleoBioDB  430 of 1018 (42.2%)
    **** Getting current taxon from PaleoBioDB  431 of 1018 (42.3%)
    **** Getting current taxon from PaleoBioDB  432 of 1018 (42.4%)
    **** Getting current taxon from PaleoBioDB  433 of 1018 (42.5%)
    **** Getting current taxon from PaleoBioDB  434 of 1018 (42.6%)
    **** Getting current taxon from PaleoBioDB  435 of 1018 (42.7%)
    **** Getting current taxon from PaleoBioDB  436 of 1018 (42.8%)
    **** Getting current taxon from PaleoBioDB  437 of 1018 (42.9%)
    **** Getting current taxon from PaleoBioDB  438 of 1018 (43%)
    **** Getting current taxon from PaleoBioDB  439 of 1018 (43.1%)
    **** Getting current taxon from PaleoBioDB  440 of 1018 (43.2%)
    **** Getting current taxon from PaleoBioDB  441 of 1018 (43.3%)
    **** Getting current taxon from PaleoBioDB  442 of 1018 (43.4%)
    **** Getting current taxon from PaleoBioDB  443 of 1018 (43.5%)
    **** Getting current taxon from PaleoBioDB  444 of 1018 (43.6%)
    **** Getting current taxon from PaleoBioDB  445 of 1018 (43.7%)
    **** Getting current taxon from PaleoBioDB  446 of 1018 (43.8%)
    **** Getting current taxon from PaleoBioDB  447 of 1018 (43.9%)
    **** Getting current taxon from PaleoBioDB  448 of 1018 (44%)
    **** Getting current taxon from PaleoBioDB  449 of 1018 (44.1%)
    **** Getting current taxon from PaleoBioDB  450 of 1018 (44.2%)
    **** Getting current taxon from PaleoBioDB  451 of 1018 (44.3%)
    **** Getting current taxon from PaleoBioDB  452 of 1018 (44.4%)
    **** Getting current taxon from PaleoBioDB  453 of 1018 (44.5%)
    **** Getting current taxon from PaleoBioDB  454 of 1018 (44.6%)
    **** Getting current taxon from PaleoBioDB  455 of 1018 (44.7%)
    **** Getting current taxon from PaleoBioDB  456 of 1018 (44.8%)
    **** Getting current taxon from PaleoBioDB  457 of 1018 (44.9%)
    **** Getting current taxon from PaleoBioDB  458 of 1018 (45%)
    **** Getting current taxon from PaleoBioDB  459 of 1018 (45.1%)
    **** Getting current taxon from PaleoBioDB  460 of 1018 (45.2%)
    **** Getting current taxon from PaleoBioDB  461 of 1018 (45.3%)
    **** Getting current taxon from PaleoBioDB  462 of 1018 (45.4%)
    **** Getting current taxon from PaleoBioDB  463 of 1018 (45.5%)
    **** Getting current taxon from PaleoBioDB  464 of 1018 (45.6%)
    **** Getting current taxon from PaleoBioDB  465 of 1018 (45.7%)
    **** Getting current taxon from PaleoBioDB  466 of 1018 (45.8%)
    **** Getting current taxon from PaleoBioDB  467 of 1018 (45.9%)
    **** Getting current taxon from PaleoBioDB  468 of 1018 (46%)
    **** Getting current taxon from PaleoBioDB  469 of 1018 (46.1%)
    **** Getting current taxon from PaleoBioDB  470 of 1018 (46.2%)
    **** Getting current taxon from PaleoBioDB  471 of 1018 (46.3%)
    **** Getting current taxon from PaleoBioDB  472 of 1018 (46.4%)
    **** Getting current taxon from PaleoBioDB  473 of 1018 (46.5%)
    **** Getting current taxon from PaleoBioDB  474 of 1018 (46.6%)
    **** Getting current taxon from PaleoBioDB  475 of 1018 (46.7%)
    **** Getting current taxon from PaleoBioDB  476 of 1018 (46.8%)
    **** Getting current taxon from PaleoBioDB  477 of 1018 (46.9%)
    **** Getting current taxon from PaleoBioDB  478 of 1018 (47%)
    **** Getting current taxon from PaleoBioDB  479 of 1018 (47.1%)
    **** Getting current taxon from PaleoBioDB  480 of 1018 (47.2%)
    **** Getting current taxon from PaleoBioDB  481 of 1018 (47.2%)
    **** Getting current taxon from PaleoBioDB  482 of 1018 (47.3%)
    **** Getting current taxon from PaleoBioDB  483 of 1018 (47.4%)
    **** Getting current taxon from PaleoBioDB  484 of 1018 (47.5%)
    **** Getting current taxon from PaleoBioDB  485 of 1018 (47.6%)
    **** Getting current taxon from PaleoBioDB  486 of 1018 (47.7%)
    **** Getting current taxon from PaleoBioDB  487 of 1018 (47.8%)
    **** Getting current taxon from PaleoBioDB  488 of 1018 (47.9%)
    **** Getting current taxon from PaleoBioDB  489 of 1018 (48%)
    **** Getting current taxon from PaleoBioDB  490 of 1018 (48.1%)
    **** Getting current taxon from PaleoBioDB  491 of 1018 (48.2%)
    **** Getting current taxon from PaleoBioDB  492 of 1018 (48.3%)
    **** Getting current taxon from PaleoBioDB  493 of 1018 (48.4%)
    **** Getting current taxon from PaleoBioDB  494 of 1018 (48.5%)
    **** Getting current taxon from PaleoBioDB  495 of 1018 (48.6%)
    **** Getting current taxon from PaleoBioDB  496 of 1018 (48.7%)
    **** Getting current taxon from PaleoBioDB  497 of 1018 (48.8%)
    **** Getting current taxon from PaleoBioDB  498 of 1018 (48.9%)
    **** Getting current taxon from PaleoBioDB  499 of 1018 (49%)
    **** Getting current taxon from PaleoBioDB  500 of 1018 (49.1%)
    **** Getting current taxon from PaleoBioDB  501 of 1018 (49.2%)
    **** Getting current taxon from PaleoBioDB  502 of 1018 (49.3%)
    **** Getting current taxon from PaleoBioDB  503 of 1018 (49.4%)
    **** Getting current taxon from PaleoBioDB  504 of 1018 (49.5%)
    **** Getting current taxon from PaleoBioDB  505 of 1018 (49.6%)
    **** Getting current taxon from PaleoBioDB  506 of 1018 (49.7%)
    **** Getting current taxon from PaleoBioDB  507 of 1018 (49.8%)
    **** Getting current taxon from PaleoBioDB  508 of 1018 (49.9%)
    **** Getting current taxon from PaleoBioDB  509 of 1018 (50%)
    **** Getting current taxon from PaleoBioDB  510 of 1018 (50.1%)
    **** Getting current taxon from PaleoBioDB  511 of 1018 (50.2%)
    **** Getting current taxon from PaleoBioDB  512 of 1018 (50.3%)
    **** Getting current taxon from PaleoBioDB  513 of 1018 (50.4%)
    **** Getting current taxon from PaleoBioDB  514 of 1018 (50.5%)
    **** Getting current taxon from PaleoBioDB  515 of 1018 (50.6%)
    **** Getting current taxon from PaleoBioDB  516 of 1018 (50.7%)
    **** Getting current taxon from PaleoBioDB  517 of 1018 (50.8%)
    **** Getting current taxon from PaleoBioDB  518 of 1018 (50.9%)
    **** Getting current taxon from PaleoBioDB  519 of 1018 (51%)
    **** Getting current taxon from PaleoBioDB  520 of 1018 (51.1%)
    **** Getting current taxon from PaleoBioDB  521 of 1018 (51.2%)
    **** Getting current taxon from PaleoBioDB  522 of 1018 (51.3%)
    **** Getting current taxon from PaleoBioDB  523 of 1018 (51.4%)
    **** Getting current taxon from PaleoBioDB  524 of 1018 (51.5%)
    **** Getting current taxon from PaleoBioDB  525 of 1018 (51.6%)
    **** Getting current taxon from PaleoBioDB  526 of 1018 (51.7%)
    **** Getting current taxon from PaleoBioDB  527 of 1018 (51.8%)
    **** Getting current taxon from PaleoBioDB  528 of 1018 (51.9%)
    **** Getting current taxon from PaleoBioDB  529 of 1018 (52%)
    **** Getting current taxon from PaleoBioDB  530 of 1018 (52.1%)
    **** Getting current taxon from PaleoBioDB  531 of 1018 (52.2%)
    **** Getting current taxon from PaleoBioDB  532 of 1018 (52.3%)
    **** Getting current taxon from PaleoBioDB  533 of 1018 (52.4%)
    **** Getting current taxon from PaleoBioDB  534 of 1018 (52.5%)
    **** Getting current taxon from PaleoBioDB  535 of 1018 (52.6%)
    **** Getting current taxon from PaleoBioDB  536 of 1018 (52.7%)
    **** Getting current taxon from PaleoBioDB  537 of 1018 (52.8%)
    **** Getting current taxon from PaleoBioDB  538 of 1018 (52.8%)
    **** Getting current taxon from PaleoBioDB  539 of 1018 (52.9%)
    **** Getting current taxon from PaleoBioDB  540 of 1018 (53%)
    **** Getting current taxon from PaleoBioDB  541 of 1018 (53.1%)
    **** Getting current taxon from PaleoBioDB  542 of 1018 (53.2%)
    **** Getting current taxon from PaleoBioDB  543 of 1018 (53.3%)
    **** Getting current taxon from PaleoBioDB  544 of 1018 (53.4%)
    **** Getting current taxon from PaleoBioDB  545 of 1018 (53.5%)
    **** Getting current taxon from PaleoBioDB  546 of 1018 (53.6%)
    **** Getting current taxon from PaleoBioDB  547 of 1018 (53.7%)
    **** Getting current taxon from PaleoBioDB  548 of 1018 (53.8%)
    **** Getting current taxon from PaleoBioDB  549 of 1018 (53.9%)
    **** Getting current taxon from PaleoBioDB  550 of 1018 (54%)
    **** Getting current taxon from PaleoBioDB  551 of 1018 (54.1%)
    **** Getting current taxon from PaleoBioDB  552 of 1018 (54.2%)
    **** Getting current taxon from PaleoBioDB  553 of 1018 (54.3%)
    **** Getting current taxon from PaleoBioDB  554 of 1018 (54.4%)
    **** Getting current taxon from PaleoBioDB  555 of 1018 (54.5%)
    **** Getting current taxon from PaleoBioDB  556 of 1018 (54.6%)
    **** Getting current taxon from PaleoBioDB  557 of 1018 (54.7%)
    **** Getting current taxon from PaleoBioDB  558 of 1018 (54.8%)
    **** Getting current taxon from PaleoBioDB  559 of 1018 (54.9%)
    **** Getting current taxon from PaleoBioDB  560 of 1018 (55%)
    **** Getting current taxon from PaleoBioDB  561 of 1018 (55.1%)
    **** Getting current taxon from PaleoBioDB  562 of 1018 (55.2%)
    **** Getting current taxon from PaleoBioDB  563 of 1018 (55.3%)
    **** Getting current taxon from PaleoBioDB  564 of 1018 (55.4%)
    **** Getting current taxon from PaleoBioDB  565 of 1018 (55.5%)
    **** Getting current taxon from PaleoBioDB  566 of 1018 (55.6%)
    **** Getting current taxon from PaleoBioDB  567 of 1018 (55.7%)
    **** Getting current taxon from PaleoBioDB  568 of 1018 (55.8%)
    **** Getting current taxon from PaleoBioDB  569 of 1018 (55.9%)
    **** Getting current taxon from PaleoBioDB  570 of 1018 (56%)
    **** Getting current taxon from PaleoBioDB  571 of 1018 (56.1%)
    **** Getting current taxon from PaleoBioDB  572 of 1018 (56.2%)
    **** Getting current taxon from PaleoBioDB  573 of 1018 (56.3%)
    **** Getting current taxon from PaleoBioDB  574 of 1018 (56.4%)
    **** Getting current taxon from PaleoBioDB  575 of 1018 (56.5%)
    **** Getting current taxon from PaleoBioDB  576 of 1018 (56.6%)
    **** Getting current taxon from PaleoBioDB  577 of 1018 (56.7%)
    **** Getting current taxon from PaleoBioDB  578 of 1018 (56.8%)
    **** Getting current taxon from PaleoBioDB  579 of 1018 (56.9%)
    **** Getting current taxon from PaleoBioDB  580 of 1018 (57%)
    **** Getting current taxon from PaleoBioDB  581 of 1018 (57.1%)
    **** Getting current taxon from PaleoBioDB  582 of 1018 (57.2%)
    **** Getting current taxon from PaleoBioDB  583 of 1018 (57.3%)
    **** Getting current taxon from PaleoBioDB  584 of 1018 (57.4%)
    **** Getting current taxon from PaleoBioDB  585 of 1018 (57.5%)
    **** Getting current taxon from PaleoBioDB  586 of 1018 (57.6%)
    **** Getting current taxon from PaleoBioDB  587 of 1018 (57.7%)
    **** Getting current taxon from PaleoBioDB  588 of 1018 (57.8%)
    **** Getting current taxon from PaleoBioDB  589 of 1018 (57.9%)
    **** Getting current taxon from PaleoBioDB  590 of 1018 (58%)
    **** Getting current taxon from PaleoBioDB  591 of 1018 (58.1%)
    **** Getting current taxon from PaleoBioDB  592 of 1018 (58.2%)
    **** Getting current taxon from PaleoBioDB  593 of 1018 (58.3%)
    **** Getting current taxon from PaleoBioDB  594 of 1018 (58.3%)
    **** Getting current taxon from PaleoBioDB  595 of 1018 (58.4%)
    **** Getting current taxon from PaleoBioDB  596 of 1018 (58.5%)
    **** Getting current taxon from PaleoBioDB  597 of 1018 (58.6%)
    **** Getting current taxon from PaleoBioDB  598 of 1018 (58.7%)
    **** Getting current taxon from PaleoBioDB  599 of 1018 (58.8%)
    **** Getting current taxon from PaleoBioDB  600 of 1018 (58.9%)
    **** Getting current taxon from PaleoBioDB  601 of 1018 (59%)
    **** Getting current taxon from PaleoBioDB  602 of 1018 (59.1%)
    **** Getting current taxon from PaleoBioDB  603 of 1018 (59.2%)
    **** Getting current taxon from PaleoBioDB  604 of 1018 (59.3%)
    **** Getting current taxon from PaleoBioDB  605 of 1018 (59.4%)
    **** Getting current taxon from PaleoBioDB  606 of 1018 (59.5%)
    **** Getting current taxon from PaleoBioDB  607 of 1018 (59.6%)
    **** Getting current taxon from PaleoBioDB  608 of 1018 (59.7%)
    **** Getting current taxon from PaleoBioDB  609 of 1018 (59.8%)
    **** Getting current taxon from PaleoBioDB  610 of 1018 (59.9%)
    **** Getting current taxon from PaleoBioDB  611 of 1018 (60%)
    **** Getting current taxon from PaleoBioDB  612 of 1018 (60.1%)
    **** Getting current taxon from PaleoBioDB  613 of 1018 (60.2%)
    **** Getting current taxon from PaleoBioDB  614 of 1018 (60.3%)
    **** Getting current taxon from PaleoBioDB  615 of 1018 (60.4%)
    **** Getting current taxon from PaleoBioDB  616 of 1018 (60.5%)
    **** Getting current taxon from PaleoBioDB  617 of 1018 (60.6%)
    **** Getting current taxon from PaleoBioDB  618 of 1018 (60.7%)
    **** Getting current taxon from PaleoBioDB  619 of 1018 (60.8%)
    **** Getting current taxon from PaleoBioDB  620 of 1018 (60.9%)
    **** Getting current taxon from PaleoBioDB  621 of 1018 (61%)
    **** Getting current taxon from PaleoBioDB  622 of 1018 (61.1%)
    **** Getting current taxon from PaleoBioDB  623 of 1018 (61.2%)
    **** Getting current taxon from PaleoBioDB  624 of 1018 (61.3%)
    **** Getting current taxon from PaleoBioDB  625 of 1018 (61.4%)
    **** Getting current taxon from PaleoBioDB  626 of 1018 (61.5%)
    **** Getting current taxon from PaleoBioDB  627 of 1018 (61.6%)
    **** Getting current taxon from PaleoBioDB  628 of 1018 (61.7%)
    **** Getting current taxon from PaleoBioDB  629 of 1018 (61.8%)
    **** Getting current taxon from PaleoBioDB  630 of 1018 (61.9%)
    **** Getting current taxon from PaleoBioDB  631 of 1018 (62%)
    **** Getting current taxon from PaleoBioDB  632 of 1018 (62.1%)
    **** Getting current taxon from PaleoBioDB  633 of 1018 (62.2%)
    **** Getting current taxon from PaleoBioDB  634 of 1018 (62.3%)
    **** Getting current taxon from PaleoBioDB  635 of 1018 (62.4%)
    **** Getting current taxon from PaleoBioDB  636 of 1018 (62.5%)
    **** Getting current taxon from PaleoBioDB  637 of 1018 (62.6%)
    **** Getting current taxon from PaleoBioDB  638 of 1018 (62.7%)
    **** Getting current taxon from PaleoBioDB  639 of 1018 (62.8%)
    **** Getting current taxon from PaleoBioDB  640 of 1018 (62.9%)
    **** Getting current taxon from PaleoBioDB  641 of 1018 (63%)
    **** Getting current taxon from PaleoBioDB  642 of 1018 (63.1%)
    **** Getting current taxon from PaleoBioDB  643 of 1018 (63.2%)
    **** Getting current taxon from PaleoBioDB  644 of 1018 (63.3%)
    **** Getting current taxon from PaleoBioDB  645 of 1018 (63.4%)
    **** Getting current taxon from PaleoBioDB  646 of 1018 (63.5%)
    **** Getting current taxon from PaleoBioDB  647 of 1018 (63.6%)
    **** Getting current taxon from PaleoBioDB  648 of 1018 (63.7%)
    **** Getting current taxon from PaleoBioDB  649 of 1018 (63.8%)
    **** Getting current taxon from PaleoBioDB  650 of 1018 (63.9%)
    **** Getting current taxon from PaleoBioDB  651 of 1018 (63.9%)
    **** Getting current taxon from PaleoBioDB  652 of 1018 (64%)
    **** Getting current taxon from PaleoBioDB  653 of 1018 (64.1%)
    **** Getting current taxon from PaleoBioDB  654 of 1018 (64.2%)
    **** Getting current taxon from PaleoBioDB  655 of 1018 (64.3%)
    **** Getting current taxon from PaleoBioDB  656 of 1018 (64.4%)
    **** Getting current taxon from PaleoBioDB  657 of 1018 (64.5%)
    **** Getting current taxon from PaleoBioDB  658 of 1018 (64.6%)
    **** Getting current taxon from PaleoBioDB  659 of 1018 (64.7%)
    **** Getting current taxon from PaleoBioDB  660 of 1018 (64.8%)
    **** Getting current taxon from PaleoBioDB  661 of 1018 (64.9%)
    **** Getting current taxon from PaleoBioDB  662 of 1018 (65%)
    **** Getting current taxon from PaleoBioDB  663 of 1018 (65.1%)
    **** Getting current taxon from PaleoBioDB  664 of 1018 (65.2%)
    **** Getting current taxon from PaleoBioDB  665 of 1018 (65.3%)
    **** Getting current taxon from PaleoBioDB  666 of 1018 (65.4%)
    **** Getting current taxon from PaleoBioDB  667 of 1018 (65.5%)
    **** Getting current taxon from PaleoBioDB  668 of 1018 (65.6%)
    **** Getting current taxon from PaleoBioDB  669 of 1018 (65.7%)
    **** Getting current taxon from PaleoBioDB  670 of 1018 (65.8%)
    **** Getting current taxon from PaleoBioDB  671 of 1018 (65.9%)
    **** Getting current taxon from PaleoBioDB  672 of 1018 (66%)
    **** Getting current taxon from PaleoBioDB  673 of 1018 (66.1%)
    **** Getting current taxon from PaleoBioDB  674 of 1018 (66.2%)
    **** Getting current taxon from PaleoBioDB  675 of 1018 (66.3%)
    **** Getting current taxon from PaleoBioDB  676 of 1018 (66.4%)
    **** Getting current taxon from PaleoBioDB  677 of 1018 (66.5%)
    **** Getting current taxon from PaleoBioDB  678 of 1018 (66.6%)
    **** Getting current taxon from PaleoBioDB  679 of 1018 (66.7%)
    **** Getting current taxon from PaleoBioDB  680 of 1018 (66.8%)
    **** Getting current taxon from PaleoBioDB  681 of 1018 (66.9%)
    **** Getting current taxon from PaleoBioDB  682 of 1018 (67%)
    **** Getting current taxon from PaleoBioDB  683 of 1018 (67.1%)
    **** Getting current taxon from PaleoBioDB  684 of 1018 (67.2%)
    **** Getting current taxon from PaleoBioDB  685 of 1018 (67.3%)
    **** Getting current taxon from PaleoBioDB  686 of 1018 (67.4%)
    **** Getting current taxon from PaleoBioDB  687 of 1018 (67.5%)
    **** Getting current taxon from PaleoBioDB  688 of 1018 (67.6%)
    **** Getting current taxon from PaleoBioDB  689 of 1018 (67.7%)
    **** Getting current taxon from PaleoBioDB  690 of 1018 (67.8%)
    **** Getting current taxon from PaleoBioDB  691 of 1018 (67.9%)
    **** Getting current taxon from PaleoBioDB  692 of 1018 (68%)
    **** Getting current taxon from PaleoBioDB  693 of 1018 (68.1%)
    **** Getting current taxon from PaleoBioDB  694 of 1018 (68.2%)
    **** Getting current taxon from PaleoBioDB  695 of 1018 (68.3%)
    **** Getting current taxon from PaleoBioDB  696 of 1018 (68.4%)
    **** Getting current taxon from PaleoBioDB  697 of 1018 (68.5%)
    **** Getting current taxon from PaleoBioDB  698 of 1018 (68.6%)
    **** Getting current taxon from PaleoBioDB  699 of 1018 (68.7%)
    **** Getting current taxon from PaleoBioDB  700 of 1018 (68.8%)
    **** Getting current taxon from PaleoBioDB  701 of 1018 (68.9%)
    **** Getting current taxon from PaleoBioDB  702 of 1018 (69%)
    **** Getting current taxon from PaleoBioDB  703 of 1018 (69.1%)
    **** Getting current taxon from PaleoBioDB  704 of 1018 (69.2%)
    **** Getting current taxon from PaleoBioDB  705 of 1018 (69.3%)
    **** Getting current taxon from PaleoBioDB  706 of 1018 (69.4%)
    **** Getting current taxon from PaleoBioDB  707 of 1018 (69.4%)
    **** Getting current taxon from PaleoBioDB  708 of 1018 (69.5%)
    **** Getting current taxon from PaleoBioDB  709 of 1018 (69.6%)
    **** Getting current taxon from PaleoBioDB  710 of 1018 (69.7%)
    **** Getting current taxon from PaleoBioDB  711 of 1018 (69.8%)
    **** Getting current taxon from PaleoBioDB  712 of 1018 (69.9%)
    **** Getting current taxon from PaleoBioDB  713 of 1018 (70%)
    **** Getting current taxon from PaleoBioDB  714 of 1018 (70.1%)
    **** Getting current taxon from PaleoBioDB  715 of 1018 (70.2%)
    **** Getting current taxon from PaleoBioDB  716 of 1018 (70.3%)
    **** Getting current taxon from PaleoBioDB  717 of 1018 (70.4%)
    **** Getting current taxon from PaleoBioDB  718 of 1018 (70.5%)
    **** Getting current taxon from PaleoBioDB  719 of 1018 (70.6%)
    **** Getting current taxon from PaleoBioDB  720 of 1018 (70.7%)
    **** Getting current taxon from PaleoBioDB  721 of 1018 (70.8%)
    **** Getting current taxon from PaleoBioDB  722 of 1018 (70.9%)
    **** Getting current taxon from PaleoBioDB  723 of 1018 (71%)
    **** Getting current taxon from PaleoBioDB  724 of 1018 (71.1%)
    **** Getting current taxon from PaleoBioDB  725 of 1018 (71.2%)
    **** Getting current taxon from PaleoBioDB  726 of 1018 (71.3%)
    **** Getting current taxon from PaleoBioDB  727 of 1018 (71.4%)
    **** Getting current taxon from PaleoBioDB  728 of 1018 (71.5%)
    **** Getting current taxon from PaleoBioDB  729 of 1018 (71.6%)
    **** Getting current taxon from PaleoBioDB  730 of 1018 (71.7%)
    **** Getting current taxon from PaleoBioDB  731 of 1018 (71.8%)
    **** Getting current taxon from PaleoBioDB  732 of 1018 (71.9%)
    **** Getting current taxon from PaleoBioDB  733 of 1018 (72%)
    **** Getting current taxon from PaleoBioDB  734 of 1018 (72.1%)
    **** Getting current taxon from PaleoBioDB  735 of 1018 (72.2%)
    **** Getting current taxon from PaleoBioDB  736 of 1018 (72.3%)
    **** Getting current taxon from PaleoBioDB  737 of 1018 (72.4%)
    **** Getting current taxon from PaleoBioDB  738 of 1018 (72.5%)
    **** Getting current taxon from PaleoBioDB  739 of 1018 (72.6%)
    **** Getting current taxon from PaleoBioDB  740 of 1018 (72.7%)
    **** Getting current taxon from PaleoBioDB  741 of 1018 (72.8%)
    **** Getting current taxon from PaleoBioDB  742 of 1018 (72.9%)
    **** Getting current taxon from PaleoBioDB  743 of 1018 (73%)
    **** Getting current taxon from PaleoBioDB  744 of 1018 (73.1%)
    **** Getting current taxon from PaleoBioDB  745 of 1018 (73.2%)
    **** Getting current taxon from PaleoBioDB  746 of 1018 (73.3%)
    **** Getting current taxon from PaleoBioDB  747 of 1018 (73.4%)
    **** Getting current taxon from PaleoBioDB  748 of 1018 (73.5%)
    **** Getting current taxon from PaleoBioDB  749 of 1018 (73.6%)
    **** Getting current taxon from PaleoBioDB  750 of 1018 (73.7%)
    **** Getting current taxon from PaleoBioDB  751 of 1018 (73.8%)
    **** Getting current taxon from PaleoBioDB  752 of 1018 (73.9%)
    **** Getting current taxon from PaleoBioDB  753 of 1018 (74%)
    **** Getting current taxon from PaleoBioDB  754 of 1018 (74.1%)
    **** Getting current taxon from PaleoBioDB  755 of 1018 (74.2%)
    **** Getting current taxon from PaleoBioDB  756 of 1018 (74.3%)
    **** Getting current taxon from PaleoBioDB  757 of 1018 (74.4%)
    **** Getting current taxon from PaleoBioDB  758 of 1018 (74.5%)
    **** Getting current taxon from PaleoBioDB  759 of 1018 (74.6%)
    **** Getting current taxon from PaleoBioDB  760 of 1018 (74.7%)
    **** Getting current taxon from PaleoBioDB  761 of 1018 (74.8%)
    **** Getting current taxon from PaleoBioDB  762 of 1018 (74.9%)
    **** Getting current taxon from PaleoBioDB  763 of 1018 (75%)
    **** Getting current taxon from PaleoBioDB  764 of 1018 (75%)
    **** Getting current taxon from PaleoBioDB  765 of 1018 (75.1%)
    **** Getting current taxon from PaleoBioDB  766 of 1018 (75.2%)
    **** Getting current taxon from PaleoBioDB  767 of 1018 (75.3%)
    **** Getting current taxon from PaleoBioDB  768 of 1018 (75.4%)
    **** Getting current taxon from PaleoBioDB  769 of 1018 (75.5%)
    **** Getting current taxon from PaleoBioDB  770 of 1018 (75.6%)
    **** Getting current taxon from PaleoBioDB  771 of 1018 (75.7%)
    **** Getting current taxon from PaleoBioDB  772 of 1018 (75.8%)
    **** Getting current taxon from PaleoBioDB  773 of 1018 (75.9%)
    **** Getting current taxon from PaleoBioDB  774 of 1018 (76%)
    **** Getting current taxon from PaleoBioDB  775 of 1018 (76.1%)
    **** Getting current taxon from PaleoBioDB  776 of 1018 (76.2%)
    **** Getting current taxon from PaleoBioDB  777 of 1018 (76.3%)
    **** Getting current taxon from PaleoBioDB  778 of 1018 (76.4%)
    **** Getting current taxon from PaleoBioDB  779 of 1018 (76.5%)
    **** Getting current taxon from PaleoBioDB  780 of 1018 (76.6%)
    **** Getting current taxon from PaleoBioDB  781 of 1018 (76.7%)
    **** Getting current taxon from PaleoBioDB  782 of 1018 (76.8%)
    **** Getting current taxon from PaleoBioDB  783 of 1018 (76.9%)
    **** Getting current taxon from PaleoBioDB  784 of 1018 (77%)
    **** Getting current taxon from PaleoBioDB  785 of 1018 (77.1%)
    **** Getting current taxon from PaleoBioDB  786 of 1018 (77.2%)
    **** Getting current taxon from PaleoBioDB  787 of 1018 (77.3%)
    **** Getting current taxon from PaleoBioDB  788 of 1018 (77.4%)
    **** Getting current taxon from PaleoBioDB  789 of 1018 (77.5%)
    **** Getting current taxon from PaleoBioDB  790 of 1018 (77.6%)
    **** Getting current taxon from PaleoBioDB  791 of 1018 (77.7%)
    **** Getting current taxon from PaleoBioDB  792 of 1018 (77.8%)
    **** Getting current taxon from PaleoBioDB  793 of 1018 (77.9%)
    **** Getting current taxon from PaleoBioDB  794 of 1018 (78%)
    **** Getting current taxon from PaleoBioDB  795 of 1018 (78.1%)
    **** Getting current taxon from PaleoBioDB  796 of 1018 (78.2%)
    **** Getting current taxon from PaleoBioDB  797 of 1018 (78.3%)
    **** Getting current taxon from PaleoBioDB  798 of 1018 (78.4%)
    **** Getting current taxon from PaleoBioDB  799 of 1018 (78.5%)
    **** Getting current taxon from PaleoBioDB  800 of 1018 (78.6%)
    **** Getting current taxon from PaleoBioDB  801 of 1018 (78.7%)
    **** Getting current taxon from PaleoBioDB  802 of 1018 (78.8%)
    **** Getting current taxon from PaleoBioDB  803 of 1018 (78.9%)
    **** Getting current taxon from PaleoBioDB  804 of 1018 (79%)
    **** Getting current taxon from PaleoBioDB  805 of 1018 (79.1%)
    **** Getting current taxon from PaleoBioDB  806 of 1018 (79.2%)
    **** Getting current taxon from PaleoBioDB  807 of 1018 (79.3%)
    **** Getting current taxon from PaleoBioDB  808 of 1018 (79.4%)
    **** Getting current taxon from PaleoBioDB  809 of 1018 (79.5%)
    **** Getting current taxon from PaleoBioDB  810 of 1018 (79.6%)
    **** Getting current taxon from PaleoBioDB  811 of 1018 (79.7%)
    **** Getting current taxon from PaleoBioDB  812 of 1018 (79.8%)
    **** Getting current taxon from PaleoBioDB  813 of 1018 (79.9%)
    **** Getting current taxon from PaleoBioDB  814 of 1018 (80%)
    **** Getting current taxon from PaleoBioDB  815 of 1018 (80.1%)
    **** Getting current taxon from PaleoBioDB  816 of 1018 (80.2%)
    **** Getting current taxon from PaleoBioDB  817 of 1018 (80.3%)
    **** Getting current taxon from PaleoBioDB  818 of 1018 (80.4%)
    **** Getting current taxon from PaleoBioDB  819 of 1018 (80.5%)
    **** Getting current taxon from PaleoBioDB  820 of 1018 (80.6%)
    **** Getting current taxon from PaleoBioDB  821 of 1018 (80.6%)
    **** Getting current taxon from PaleoBioDB  822 of 1018 (80.7%)
    **** Getting current taxon from PaleoBioDB  823 of 1018 (80.8%)
    **** Getting current taxon from PaleoBioDB  824 of 1018 (80.9%)
    **** Getting current taxon from PaleoBioDB  825 of 1018 (81%)
    **** Getting current taxon from PaleoBioDB  826 of 1018 (81.1%)
    **** Getting current taxon from PaleoBioDB  827 of 1018 (81.2%)
    **** Getting current taxon from PaleoBioDB  828 of 1018 (81.3%)
    **** Getting current taxon from PaleoBioDB  829 of 1018 (81.4%)
    **** Getting current taxon from PaleoBioDB  830 of 1018 (81.5%)
    **** Getting current taxon from PaleoBioDB  831 of 1018 (81.6%)
    **** Getting current taxon from PaleoBioDB  832 of 1018 (81.7%)
    **** Getting current taxon from PaleoBioDB  833 of 1018 (81.8%)
    **** Getting current taxon from PaleoBioDB  834 of 1018 (81.9%)
    **** Getting current taxon from PaleoBioDB  835 of 1018 (82%)
    **** Getting current taxon from PaleoBioDB  836 of 1018 (82.1%)
    **** Getting current taxon from PaleoBioDB  837 of 1018 (82.2%)
    **** Getting current taxon from PaleoBioDB  838 of 1018 (82.3%)
    **** Getting current taxon from PaleoBioDB  839 of 1018 (82.4%)
    **** Getting current taxon from PaleoBioDB  840 of 1018 (82.5%)
    **** Getting current taxon from PaleoBioDB  841 of 1018 (82.6%)
    **** Getting current taxon from PaleoBioDB  842 of 1018 (82.7%)
    **** Getting current taxon from PaleoBioDB  843 of 1018 (82.8%)
    **** Getting current taxon from PaleoBioDB  844 of 1018 (82.9%)
    **** Getting current taxon from PaleoBioDB  845 of 1018 (83%)
    **** Getting current taxon from PaleoBioDB  846 of 1018 (83.1%)
    **** Getting current taxon from PaleoBioDB  847 of 1018 (83.2%)
    **** Getting current taxon from PaleoBioDB  848 of 1018 (83.3%)
    **** Getting current taxon from PaleoBioDB  849 of 1018 (83.4%)
    **** Getting current taxon from PaleoBioDB  850 of 1018 (83.5%)
    **** Getting current taxon from PaleoBioDB  851 of 1018 (83.6%)
    **** Getting current taxon from PaleoBioDB  852 of 1018 (83.7%)
    **** Getting current taxon from PaleoBioDB  853 of 1018 (83.8%)
    **** Getting current taxon from PaleoBioDB  854 of 1018 (83.9%)
    **** Getting current taxon from PaleoBioDB  855 of 1018 (84%)
    **** Getting current taxon from PaleoBioDB  856 of 1018 (84.1%)
    **** Getting current taxon from PaleoBioDB  857 of 1018 (84.2%)
    **** Getting current taxon from PaleoBioDB  858 of 1018 (84.3%)
    **** Getting current taxon from PaleoBioDB  859 of 1018 (84.4%)
    **** Getting current taxon from PaleoBioDB  860 of 1018 (84.5%)
    **** Getting current taxon from PaleoBioDB  861 of 1018 (84.6%)
    **** Getting current taxon from PaleoBioDB  862 of 1018 (84.7%)
    **** Getting current taxon from PaleoBioDB  863 of 1018 (84.8%)
    **** Getting current taxon from PaleoBioDB  864 of 1018 (84.9%)
    **** Getting current taxon from PaleoBioDB  865 of 1018 (85%)
    **** Getting current taxon from PaleoBioDB  866 of 1018 (85.1%)
    **** Getting current taxon from PaleoBioDB  867 of 1018 (85.2%)
    **** Getting current taxon from PaleoBioDB  868 of 1018 (85.3%)
    **** Getting current taxon from PaleoBioDB  869 of 1018 (85.4%)
    **** Getting current taxon from PaleoBioDB  870 of 1018 (85.5%)
    **** Getting current taxon from PaleoBioDB  871 of 1018 (85.6%)
    **** Getting current taxon from PaleoBioDB  872 of 1018 (85.7%)
    **** Getting current taxon from PaleoBioDB  873 of 1018 (85.8%)
    **** Getting current taxon from PaleoBioDB  874 of 1018 (85.9%)
    **** Getting current taxon from PaleoBioDB  875 of 1018 (86%)
    **** Getting current taxon from PaleoBioDB  876 of 1018 (86.1%)
    **** Getting current taxon from PaleoBioDB  877 of 1018 (86.1%)
    **** Getting current taxon from PaleoBioDB  878 of 1018 (86.2%)
    **** Getting current taxon from PaleoBioDB  879 of 1018 (86.3%)
    **** Getting current taxon from PaleoBioDB  880 of 1018 (86.4%)
    **** Getting current taxon from PaleoBioDB  881 of 1018 (86.5%)
    **** Getting current taxon from PaleoBioDB  882 of 1018 (86.6%)
    **** Getting current taxon from PaleoBioDB  883 of 1018 (86.7%)
    **** Getting current taxon from PaleoBioDB  884 of 1018 (86.8%)
    **** Getting current taxon from PaleoBioDB  885 of 1018 (86.9%)
    **** Getting current taxon from PaleoBioDB  886 of 1018 (87%)
    **** Getting current taxon from PaleoBioDB  887 of 1018 (87.1%)
    **** Getting current taxon from PaleoBioDB  888 of 1018 (87.2%)
    **** Getting current taxon from PaleoBioDB  889 of 1018 (87.3%)
    **** Getting current taxon from PaleoBioDB  890 of 1018 (87.4%)
    **** Getting current taxon from PaleoBioDB  891 of 1018 (87.5%)
    **** Getting current taxon from PaleoBioDB  892 of 1018 (87.6%)
    **** Getting current taxon from PaleoBioDB  893 of 1018 (87.7%)
    **** Getting current taxon from PaleoBioDB  894 of 1018 (87.8%)
    **** Getting current taxon from PaleoBioDB  895 of 1018 (87.9%)
    **** Getting current taxon from PaleoBioDB  896 of 1018 (88%)
    **** Getting current taxon from PaleoBioDB  897 of 1018 (88.1%)
    **** Getting current taxon from PaleoBioDB  898 of 1018 (88.2%)
    **** Getting current taxon from PaleoBioDB  899 of 1018 (88.3%)
    **** Getting current taxon from PaleoBioDB  900 of 1018 (88.4%)
    **** Getting current taxon from PaleoBioDB  901 of 1018 (88.5%)
    **** Getting current taxon from PaleoBioDB  902 of 1018 (88.6%)
    **** Getting current taxon from PaleoBioDB  903 of 1018 (88.7%)
    **** Getting current taxon from PaleoBioDB  904 of 1018 (88.8%)
    **** Getting current taxon from PaleoBioDB  905 of 1018 (88.9%)
    **** Getting current taxon from PaleoBioDB  906 of 1018 (89%)
    **** Getting current taxon from PaleoBioDB  907 of 1018 (89.1%)
    **** Getting current taxon from PaleoBioDB  908 of 1018 (89.2%)
    **** Getting current taxon from PaleoBioDB  909 of 1018 (89.3%)
    **** Getting current taxon from PaleoBioDB  910 of 1018 (89.4%)
    **** Getting current taxon from PaleoBioDB  911 of 1018 (89.5%)
    **** Getting current taxon from PaleoBioDB  912 of 1018 (89.6%)
    **** Getting current taxon from PaleoBioDB  913 of 1018 (89.7%)
    **** Getting current taxon from PaleoBioDB  914 of 1018 (89.8%)
    **** Getting current taxon from PaleoBioDB  915 of 1018 (89.9%)
    **** Getting current taxon from PaleoBioDB  916 of 1018 (90%)
    **** Getting current taxon from PaleoBioDB  917 of 1018 (90.1%)
    **** Getting current taxon from PaleoBioDB  918 of 1018 (90.2%)
    **** Getting current taxon from PaleoBioDB  919 of 1018 (90.3%)
    **** Getting current taxon from PaleoBioDB  920 of 1018 (90.4%)
    **** Getting current taxon from PaleoBioDB  921 of 1018 (90.5%)
    **** Getting current taxon from PaleoBioDB  922 of 1018 (90.6%)
    **** Getting current taxon from PaleoBioDB  923 of 1018 (90.7%)
    **** Getting current taxon from PaleoBioDB  924 of 1018 (90.8%)
    **** Getting current taxon from PaleoBioDB  925 of 1018 (90.9%)
    **** Getting current taxon from PaleoBioDB  926 of 1018 (91%)
    **** Getting current taxon from PaleoBioDB  927 of 1018 (91.1%)
    **** Getting current taxon from PaleoBioDB  928 of 1018 (91.2%)
    **** Getting current taxon from PaleoBioDB  929 of 1018 (91.3%)
    **** Getting current taxon from PaleoBioDB  930 of 1018 (91.4%)
    **** Getting current taxon from PaleoBioDB  931 of 1018 (91.5%)
    **** Getting current taxon from PaleoBioDB  932 of 1018 (91.6%)
    **** Getting current taxon from PaleoBioDB  933 of 1018 (91.7%)
    **** Getting current taxon from PaleoBioDB  934 of 1018 (91.7%)
    **** Getting current taxon from PaleoBioDB  935 of 1018 (91.8%)
    **** Getting current taxon from PaleoBioDB  936 of 1018 (91.9%)
    **** Getting current taxon from PaleoBioDB  937 of 1018 (92%)
    **** Getting current taxon from PaleoBioDB  938 of 1018 (92.1%)
    **** Getting current taxon from PaleoBioDB  939 of 1018 (92.2%)
    **** Getting current taxon from PaleoBioDB  940 of 1018 (92.3%)
    **** Getting current taxon from PaleoBioDB  941 of 1018 (92.4%)
    **** Getting current taxon from PaleoBioDB  942 of 1018 (92.5%)
    **** Getting current taxon from PaleoBioDB  943 of 1018 (92.6%)
    **** Getting current taxon from PaleoBioDB  944 of 1018 (92.7%)
    **** Getting current taxon from PaleoBioDB  945 of 1018 (92.8%)
    **** Getting current taxon from PaleoBioDB  946 of 1018 (92.9%)
    **** Getting current taxon from PaleoBioDB  947 of 1018 (93%)
    **** Getting current taxon from PaleoBioDB  948 of 1018 (93.1%)
    **** Getting current taxon from PaleoBioDB  949 of 1018 (93.2%)
    **** Getting current taxon from PaleoBioDB  950 of 1018 (93.3%)
    **** Getting current taxon from PaleoBioDB  951 of 1018 (93.4%)
    **** Getting current taxon from PaleoBioDB  952 of 1018 (93.5%)
    **** Getting current taxon from PaleoBioDB  953 of 1018 (93.6%)
    **** Getting current taxon from PaleoBioDB  954 of 1018 (93.7%)
    **** Getting current taxon from PaleoBioDB  955 of 1018 (93.8%)
    **** Getting current taxon from PaleoBioDB  956 of 1018 (93.9%)
    **** Getting current taxon from PaleoBioDB  957 of 1018 (94%)
    **** Getting current taxon from PaleoBioDB  958 of 1018 (94.1%)
    **** Getting current taxon from PaleoBioDB  959 of 1018 (94.2%)
    **** Getting current taxon from PaleoBioDB  960 of 1018 (94.3%)
    **** Getting current taxon from PaleoBioDB  961 of 1018 (94.4%)
    **** Getting current taxon from PaleoBioDB  962 of 1018 (94.5%)
    **** Getting current taxon from PaleoBioDB  963 of 1018 (94.6%)
    **** Getting current taxon from PaleoBioDB  964 of 1018 (94.7%)
    **** Getting current taxon from PaleoBioDB  965 of 1018 (94.8%)
    **** Getting current taxon from PaleoBioDB  966 of 1018 (94.9%)
    **** Getting current taxon from PaleoBioDB  967 of 1018 (95%)
    **** Getting current taxon from PaleoBioDB  968 of 1018 (95.1%)
    **** Getting current taxon from PaleoBioDB  969 of 1018 (95.2%)
    **** Getting current taxon from PaleoBioDB  970 of 1018 (95.3%)
    **** Getting current taxon from PaleoBioDB  971 of 1018 (95.4%)
    **** Getting current taxon from PaleoBioDB  972 of 1018 (95.5%)
    **** Getting current taxon from PaleoBioDB  973 of 1018 (95.6%)
    **** Getting current taxon from PaleoBioDB  974 of 1018 (95.7%)
    **** Getting current taxon from PaleoBioDB  975 of 1018 (95.8%)
    **** Getting current taxon from PaleoBioDB  976 of 1018 (95.9%)
    **** Getting current taxon from PaleoBioDB  977 of 1018 (96%)
    **** Getting current taxon from PaleoBioDB  978 of 1018 (96.1%)
    **** Getting current taxon from PaleoBioDB  979 of 1018 (96.2%)
    **** Getting current taxon from PaleoBioDB  980 of 1018 (96.3%)
    **** Getting current taxon from PaleoBioDB  981 of 1018 (96.4%)
    **** Getting current taxon from PaleoBioDB  982 of 1018 (96.5%)
    **** Getting current taxon from PaleoBioDB  983 of 1018 (96.6%)
    **** Getting current taxon from PaleoBioDB  984 of 1018 (96.7%)
    **** Getting current taxon from PaleoBioDB  985 of 1018 (96.8%)
    **** Getting current taxon from PaleoBioDB  986 of 1018 (96.9%)
    **** Getting current taxon from PaleoBioDB  987 of 1018 (97%)
    **** Getting current taxon from PaleoBioDB  988 of 1018 (97.1%)
    **** Getting current taxon from PaleoBioDB  989 of 1018 (97.2%)
    **** Getting current taxon from PaleoBioDB  990 of 1018 (97.2%)
    **** Getting current taxon from PaleoBioDB  991 of 1018 (97.3%)
    **** Getting current taxon from PaleoBioDB  992 of 1018 (97.4%)
    **** Getting current taxon from PaleoBioDB  993 of 1018 (97.5%)
    **** Getting current taxon from PaleoBioDB  994 of 1018 (97.6%)
    **** Getting current taxon from PaleoBioDB  995 of 1018 (97.7%)
    **** Getting current taxon from PaleoBioDB  996 of 1018 (97.8%)
    **** Getting current taxon from PaleoBioDB  997 of 1018 (97.9%)
    **** Getting current taxon from PaleoBioDB  998 of 1018 (98%)
    **** Getting current taxon from PaleoBioDB  999 of 1018 (98.1%)
    **** Getting current taxon from PaleoBioDB  1000 of 1018 (98.2%)
    **** Getting current taxon from PaleoBioDB  1001 of 1018 (98.3%)
    **** Getting current taxon from PaleoBioDB  1002 of 1018 (98.4%)
    **** Getting current taxon from PaleoBioDB  1003 of 1018 (98.5%)
    **** Getting current taxon from PaleoBioDB  1004 of 1018 (98.6%)
    **** Getting current taxon from PaleoBioDB  1005 of 1018 (98.7%)
    **** Getting current taxon from PaleoBioDB  1006 of 1018 (98.8%)
    **** Getting current taxon from PaleoBioDB  1007 of 1018 (98.9%)
    **** Getting current taxon from PaleoBioDB  1008 of 1018 (99%)
    **** Getting current taxon from PaleoBioDB  1009 of 1018 (99.1%)
    **** Getting current taxon from PaleoBioDB  1010 of 1018 (99.2%)
    **** Getting current taxon from PaleoBioDB  1011 of 1018 (99.3%)
    **** Getting current taxon from PaleoBioDB  1012 of 1018 (99.4%)
    **** Getting current taxon from PaleoBioDB  1013 of 1018 (99.5%)
    **** Getting current taxon from PaleoBioDB  1014 of 1018 (99.6%)
    **** Getting current taxon from PaleoBioDB  1015 of 1018 (99.7%)
    **** Getting current taxon from PaleoBioDB  1016 of 1018 (99.8%)
    **** Getting current taxon from PaleoBioDB  1017 of 1018 (99.9%)
    **** Getting current taxon from PaleoBioDB  1018 of 1018 (100%)
[1] ""
## [1] "Building body mass estimates..."
  ####################################################################################################################################
  #### reduces matrix to just the focal order(s)
  ####################################################################################################################################
  
  archaic.ung <- read.csv("/Users/emdoughty/Dropbox/Code/ArchaicUngulate_UploadFile_2021_4_29.csv")
  
  archaic.Mat.tot <- getMeasureMatCondylarths(data.raw = archaic.ung, occs = occs, 
                                              col.order = colnames(measure.mat), 
                                              all.bm = FALSE,
                                              regression = "ArchaicNonselenodonts")
## [1] "Total Coverage:  106/179"
## [1] "Arctocyonidae:  44/71"
## [1] "Chriacidae:  2/4"
## [1] "Hyopsodontidae:  24/42"
## [1] "Periptychidae:  14/39"
## [1] "Phenacodontidae:  22/23"
## [1] "Building body mass estimates..."
  #test <- jon_archicBodyMassEstim()
  #test.bm <- 10^test$bodyMass
  #test.bm <- test.bm/1000
  #test.bm <- log10(test.bm)
  
  measure.mat <- rbind(measure.mat, archaic.Mat.tot)
  
  focal.order <- c("Artiodactyla", "Perissodactyla")
  focal.family <- unique(occs[occs$order %in% focal.order,]$family)
  add.family <- c("Arctocyonidae", "Chriacidae", "Hyopsodontidae","Periptychidae","Phenacodontidae")
  focal.family <- c(as.character(focal.family), add.family)
  focal.family <- focal.family[!focal.family %in% ""]
  focal.family <- focal.family[order(focal.family)]
  
  bigList <- unique(occs[((occs$accepted_rank =="species" | occs$accepted_rank =="genus") & (occs$order %in% focal.order | occs$family %in% add.family)), c("order","family", "genus", "accepted_name")])
  #bigList.cond <- unique(occs[((occs$accepted_rank =="species" | occs$accepted_rank =="genus") & occs$family %in% add.family), c("order","family", "genus", "accepted_name")])
 # bigList <- rbind(bigList,bigList.cond)
  
  bigList <- bigList[order(bigList$order, bigList$family, bigList$genus, bigList$accepted_name),]
  shortFam <- sort(unique(bigList$family[bigList$family %in% focal.family]))    
  
  bigList$accepted_name <- gsub(pattern = "[[:space:]]", replacement = "_", x = bigList$accepted_name)
  measure.mat <- measure.mat[measure.mat$taxon %in% bigList$accepted_name[bigList$family %in% shortFam], ]
  
  #this.rank <- "genus"
if (this.rank=="genus") measure.mat<- makeOneGenusMatFromSpecimenMat(measure.mat)
pred.data <- read.csv("~/Dropbox/Proposal/predator_data_final.csv")
colnames(pred.data) <- c("family", "taxon", "max_ma","min_ma",  "m1L",  "rbl",  "bodyMass", "Citation")
pred.data$taxon <- gsub(pattern = "[[:space:]]", replacement = "_", x = pred.data$taxon)
rownames(pred.data) <- pred.data$taxon

pred.data[,c("bodyMass")] <- log10(pred.data[,c("bodyMass")])
pred.data <- pred.data[is.finite(pred.data$bodyMass),]

focal.orderPred <- c("Carnivora", "Creodonta","Hyaenodonta")
#occsPred <- occs[occs$order %in% focal.orderPred,]
focal.familyPred <- unique(occs[occs$order %in% focal.orderPred,]$family)
focal.familyPred <- c(as.character(focal.familyPred), "Viverravidae")

focal.familyPred <- focal.familyPred[!focal.familyPred%in% ""]
focal.familyPred <- focal.familyPred[order(focal.familyPred)]

bigListPred <- unique(occs[((occs$accepted_rank =="species" | occs$accepted_rank =="genus") & occs$family %in% focal.familyPred), c("order","family", "genus", "accepted_name")])
bigListPred <- bigListPred[order(bigListPred$order, bigListPred$family, bigListPred$genus, bigListPred$accepted_name),]
# bigList[order(bigList$family, bigList$accepted_name),]

bigListPred$accepted_name <- gsub(pattern = "[[:space:]]", replacement = "_", x = bigListPred$accepted_name)
bigListPred <- bigListPred[bigListPred$accepted_name %in% pred.data$taxon,]
shortFamPred <- sort(unique(bigListPred$family[bigListPred$family %in% focal.familyPred]))  

#pred.data <- getDateTaxa(measure.mat = pred.data, occs=occsPred, this.rank = "species")
pred.data <- pred.data[complete.cases(pred.data),]

#this.rank <- "genus"
if (this.rank=="genus") {
  get.genus <- strsplit(pred.data$taxon, "_")
  pred.data$genus <- sapply( get.genus, "[", 1 )

  pred.data <- makeOneGenusMatFromSpecimenMat(pred.data)
} 
if(is.null(repIntLoad))
{
  do.parallel <- TRUE
    if (do.parallel) require(parallel)
  reps <- 10000
  do.subsample <- TRUE
  quota <- 0.4
  do.disparity <- FALSE
  bootstrapSpecimens <- FALSE
  bootstrapSpecies <- FALSE
  bootstrapSpeciesWithinIntervals <- FALSE
  plotHist <- FALSE
  do.heuristic <- TRUE
    extra.intvs <- 0
  do.rangethrough <- TRUE
  save.files <- TRUE
  
  if (bootstrapSpecies) holderMat <- measure.mat
  
  if (plotHist) {
    quartz("Guild Histograms")
    par(mfrow=c((nrow(intervals)), 3), mar=c(0,0,0.75,0), cex.axis=0.5, cex.main=0.75)
  }
  
  repIntOccs <- list()
  
  ################################################################################################################################################
  #### get species within intervals
  ################################################################################################################################################
  
  for (rep in seq_len(reps)) {
    cat("Beginning Rep", rep, "of", reps, "...\r")
    ##################################################We need to update this sbootstrap section
    if (bootstrapSpecimens) {
        measure.mat <- specimenMat[sample.int(nrow(specimenMat), size=nrow(specimenMat), replace=TRUE),]
        measure.mat <- aggregate(measure.mat, by=list(taxon=specimenMat$taxon), mean, na.rm=TRUE)
        # measure.mat <- measure.mat[,apply(!sapply(measure.mat, is.na), 2, any)]
        rownames(measure.mat) <- measure.mat$taxon
        measure.mat[sapply(measure.mat, is.nan)] <- NA
        # measure.mat<-cbind(measure.mat, cbind(FO=vector(length=nrow(measure.mat), mode="numeric"), LO=vector(length=nrow(measure.mat), mode="numeric")))
        measure.mat[,"reg"] <- as.character(famList$reg[match(measure.mat$taxon,famList$taxon)])
        measure.mat[,"bodyMass"] <- makeBodyMasses(measure.mat, regList, best.only=TRUE)
        # measure.mat[,"PC2"] <- pcVec[match(measure.mat$taxon, names(pcVec))]
        # measure.mat[,"PC3"] <- pcaLo$x[match(measure.mat$taxon, rownames(pcaLo$x)),3]
    }
    if (bootstrapSpecies) measure.mat <- holderMat[sample.int(n=nrow(measure.mat), size=nrow(measure.mat), replace=TRUE),]
  
    col.dates <- getCollectionAgesFromOccs(occs=occs[, c("collection_no", "max_ma", "min_ma")], random=TRUE)
    occDates <- col.dates$collection_age[match(occs$collection_no, col.dates$collection_no)]
    intOccs <- apply(intervals, 1, function(thisIntv) occs$occurrence_no[occDates > thisIntv[1] & occDates <= thisIntv[2]]) # greater than ageTop, less than or equal to ageBase
    # intTaxa <- sapply(intOccs, function(x) unique(occs$accepted_name[occs$occurrence_no %in% x]))
    # x <- intOccs
    # intSp <- sapply(intOccs, function(x) match(sort(unique(gsub(pattern = "[[:space:]]", replacement = "_", x = occs$accepted_name[occs$accepted_rank  == "species" & occs$occurrence_no %in% x]))), measure.mat$taxon))
    # intSp <- sapply(intOccs, function(x) match(sort(unique(occs$accepted_name[occs$accepted_rank  %in% c("genus", "species") & occs$occurrence_no %in% x]))), measure.mat$taxon))
    # intSp <- sapply(intOccs, function(x) sort(unique(as.character(occs$accepted_name[occs$occurrence_no %in% x]))))
  
    #which(occs$occurrence_no %in% x == TRUE) # none are being returned as TRUE
    
    if (do.subsample) { 
        nOccs <- sapply(intOccs, length)
        # nTaxa <- sapply(intSp, length)            ### if you want to set the quota no lower than the maximum number of SIB taxa; intSp is required for this to work, so has to be done above
        nTaxa <- 0                                  ### set to zero to simply set the quota to the minimum number of occurrences
        quota <- max(c(max(nTaxa), min(nOccs)))     ### quota is either the maximum number of observed taxa, or the minimum number of occurrences
        cat("Subsampling quota set to", quota, "occurrences")
  
        intOccs <- lapply(X=intOccs, FUN=sample, size=quota)
    }
    
    repIntOccs[[rep]] <- intOccs 
  }
  
  repIntTaxa <- getRepIntTaxaFromRepIntOccs(repIntOccs, this.rank=this.rank, do.rangethrough=do.rangethrough)
}
if(!is.null(repIntLoad)) load(repIntLoad)
#need to refill nominal groupings or remove them

rem.col <- c("family","genus","reg.vec")
measure.mat <- measure.mat[,!colnames(measure.mat) %in% rem.col]

countCube_herb <- sapply(repIntTaxa, function(this.rep) {
  sapply(this.rep, function(this.intv, this.rep) {
    hist(measure.mat[,"bodyMass"][match(this.intv, measure.mat$taxon)], 
         breaks= bmBreaks_herb, plot=FALSE)$counts
  }, this.rep=this.rep)
}, simplify = "array")

#countCube <- countCube[,,1]

sizecateg <- c("rabbit (<5 kg)", 
               "water deer (5-25 kg)",#"dog (5-25 kg)", could also do beaver for 5-25kg
               "antelope (25-150kg)", 
               "horse (150-500 kg)", 
               "rhino (500-1000 kg)")

dimnames(countCube_herb) <- list(sizecateg, rownames(intervals), NULL)
rem.col <- c("family","genus","reg.vec","diet")
pred.data <- pred.data[,!colnames(pred.data) %in% rem.col]

countCube_pred <- sapply(repIntTaxa, function(this.rep) {
  sapply(this.rep, function(this.intv, this.rep) {
    hist(pred.data[,"bodyMass"][match(this.intv, pred.data$taxon)], 
         breaks= bmBreaks_pred, plot=FALSE)$counts
  }, this.rep=this.rep)
}, simplify = "array")

#countCube <- countCube[,,1]

sizecateg <- c("<1kg",
               "1kg to 7kg",
               "7kg to 21kg", 
               "21kg to 100kg",
               ">100kg")

dimnames(countCube_pred) <- list(sizecateg, rownames(intervals), NULL)

Functional Diversity Through Time

#quartz(width=6.89)
#par(mfrow=c(2,1), mar=c(4,4,1.6,4), mgp=c(2, 1,0)) #, height = 2.15, width = 8.21)

    prop_herb <- t(apply(countCube_herb, c(1,2), mean, na.rm=TRUE))
        colnames(prop_herb)[colnames(prop_herb)==""] <- "indeterminate"
        # dimnames(prop) <- list(rownames(intervals), shortFam)
        plotStackedRichness(this.box=prop_herb, intervals=intervals, reorder.taxa = FALSE, do.log=FALSE, overlay.labels=FALSE, numbers.only=FALSE, legend=FALSE, xlim = c(65, #xlim=c(max(intervals, na.rm=TRUE)
                          min(intervals, na.rm=TRUE)))

#quartz(width=6.89)
#par(mfrow=c(2,1), mar=c(4,4,1.6,4), mgp=c(2, 1,0)) #, height = 2.15, width = 8.21)

    prop_pred <- t(apply(countCube_pred, c(1,2), mean, na.rm=TRUE))
        colnames(prop_pred)[colnames(prop_pred)==""] <- "indeterminate"
        # dimnames(prop) <- list(rownames(intervals), shortFam)
        plotStackedRichness(this.box=prop_pred, intervals=intervals, reorder.taxa = FALSE, do.log=FALSE, overlay.labels=FALSE, numbers.only=FALSE, legend=FALSE, xlim = c(65,  min(intervals, na.rm=TRUE)), ylim = c(0, 35))

Pred/Prey Richness Plots

rowSums(prop_pred)
##      To      Ti      Cf   Wa0/5     Wa6     Wa7   Br0/1     Br2     Br3 
##  2.9541  5.9756  8.9933 18.0960 22.1452 22.2093 19.6765 15.0769 13.7280 
##     Ui1   Ui2/3      Du     Ch1   Ch2/3     Ch4      Or      Wh     Ar1 
## 10.9703  4.6282  3.2651  8.4028  9.6273  8.6869  9.3150 15.2728 18.9378 
##     Ar2     Ar3     Ar4     He1     He2     Ba1     Ba2     Cl1     Cl2 
## 22.5535 25.4091 26.3289 29.7488 29.6436 29.2269 28.9782 25.0727 25.4397 
##     Cl3     Hh1     Hh2     Hh3     Hh4    E BL    L Bl    E Ir    M Ir 
## 27.9702 29.3846 28.4920 25.6331 20.0615 15.0974 18.4366 19.1090 20.5972 
##      Ra      Ho 
## 19.8623 13.6019
rowSums(prop_herb)
##      To      Ti      Cf   Wa0/5     Wa6     Wa7   Br0/1     Br2     Br3 
## 36.4003 24.6719 12.3120 27.5041 33.3170 34.4685 35.8260 28.8383 23.2865 
##     Ui1   Ui2/3      Du     Ch1   Ch2/3     Ch4      Or      Wh     Ar1 
## 28.5700 38.0963 36.0787 48.7119 52.3849 47.1755 30.7687 36.3608 33.6831 
##     Ar2     Ar3     Ar4     He1     He2     Ba1     Ba2     Cl1     Cl2 
## 50.8329 70.9480 78.3408 88.1824 88.6187 83.2290 86.5178 82.7141 82.4608 
##     Cl3     Hh1     Hh2     Hh3     Hh4    E BL    L Bl    E Ir    M Ir 
## 83.2413 81.9893 75.3335 63.4528 44.2279 14.2958 18.7618 20.8441 20.9001 
##      Ra      Ho 
## 17.3769  6.6404
pred_prey_ratio <- rowSums(prop_pred)/rowSums(prop_herb)

continental_richness <- rowSums(prop_pred) + rowSums(prop_herb)

plot(continental_richness, pred_prey_ratio, cex = 0.25, xlab = "Continental Richness", ylab= "Predator Richness/Prey Richness")
text(continental_richness, pred_prey_ratio, labels = names(pred_prey_ratio), cex = 0.75)

Correlation Matrices

“raw” correlations

#cor.p <- cor.mtest(cbind(xval, yval), method = "pearson")

ungulates <- prop_herb
predators <- prop_pred

all.val <- cbind(predators, ungulates)

corr.results.both <- cor(predators, ungulates, method = "spearman")
cor.p <- cor.mtest(all.val)$p

cor.p.culled <- cor.p[,colnames(cor.p) %in% colnames(ungulates)]
cor.p.culled <- cor.p.culled[rownames(cor.p.culled) %in% colnames(predators),]

corrplot::corrplot(corr.results.both,  mar = c(1,1,1,1), p.mat = cor.p.culled, #insig = "blank",
                   cl.align.text = 'l', addCoef.col = 'black')

mtext("Large Herbivore", side = 3, line = -3, cex = 1.5)
mtext("Predator", side = 2, adj = 0.6, line = 0, cex = 1.5)

First Differences Correlation

pred.prey.DivFirstDiff <- getDiversity1stDiff(data.mat = t(prop_pred), intervals = intervals)

UngualteBMGroupDiv_FirstDiff <- getDiversity1stDiff(data.mat = t(prop_herb), intervals = intervals)

#UngualteBMGroupDiv_FirstDiff

#pred.prey.DivFirstDiff

#should make list of plots of each catagpry through time to make sure data is stationary

ungulates <- t(as.matrix(UngualteBMGroupDiv_FirstDiff))
predators <- t(as.matrix(pred.prey.DivFirstDiff))

all.val <- cbind(predators, ungulates)

corr.results.both <- cor(predators, ungulates, method = "spearman")
cor.p <- cor.mtest(all.val)$p

cor.p.culled <- cor.p[,colnames(cor.p) %in% colnames(ungulates)]
cor.p.culled <- cor.p.culled[rownames(cor.p.culled) %in% colnames(predators),]

corrplot::corrplot(corr.results.both,  mar = c(1,1,1,1), p.mat = cor.p.culled, #insig = "blank",
                   cl.align.text = 'l', addCoef.col = 'black')

mtext("Large Herbivore", side = 3, line = -3, cex = 1.5)
mtext("Predator", side = 2, adj = 0.6, line = 0, cex = 1.5)

Handley Analysis

if(interval.type %in% "bins") load("/Users/emdoughty/Dropbox/Code/R/Results/BM_handleyResult_ungulates_this.rank=species_timebin=2Mabins_start=66_end=0_SampleStandardized=TRUE_Reps=10000Jonathans_MBP.lan##------ Thu Mar 10 19:47:14 2022 ------##.Rdata")
  
  #"/Users/emdoughty/Dropbox/Code/R/Results/BM_handleyResult_ungulates_this.rank=species_timebin=2Mabins_start=64Ma_end=0Ma_SampleStandardized=TRUE_Reps=10000Jonathans_MBP.lan##------ Sat Mar  5 00:00:09 2022 ------##.Rdata")

if(interval.type %in% "nalma") load("/Users/emdoughty/Dropbox/Code/R/Results/BM_handleyResult_ungulates_this.rank=species_timebin=nalma_SampleStandardized=TRUE_Reps=10000Jonathans_MBP.lan##------ Thu Mar  3 22:25:10 2022 ------##.Rdata")
#countCube_ung <- countCube
optList_bm_median_ung <- optList_bm_median
optList_bm_allReps_ung <- optList_bm_allReps
if(interval.type %in% "bins") load("/Users/emdoughty/Dropbox/Code/R/Results/BM_handleyResult_carnivores_allCateg_this.rank=species_timebin=2Mabins_start=66_end=0_SampleStandardized=TRUE_Reps=10000Jonathans_MBP.lan##------ Thu Mar 10 21:44:05 2022 ------##.Rdata")
#/Users/emdoughty/Dropbox/Code/R/Results/BM_handleyResult_carnivores_allCateg_this.rank=species_timebin=2Mabins_start=64Ma_end=0Ma_SampleStandardized=TRUE_Reps=10000Jonathans_MBP.lan##------ Sat Mar  5 03:39:27 2022 ------##.Rdata")

if(interval.type %in% "nalma") load("/Users/emdoughty/Dropbox/Code/R/Results/BM_handleyResult_carnivores_allCateg_this.rank=species_timebin=nalma_SampleStandardized=TRUE_Reps=10000Jonathans_MBP.lan##------ Fri Mar  4 20:01:17 2022 ------##.Rdata")
#countCube_pred <- countCube
optList_bm_median_pred <- optList_bm_median
optList_bm_allReps_pred <- optList_bm_allReps
bm_quants_ung <- apply(sapply(repIntTaxa, function(y) sapply(y, function(x) quantile(measure.mat[as.character(x),"bodyMass"], probs=c(0, 0.25, 0.5, 0.75, 1.0), na.rm=TRUE)), simplify = "array"), c(1,2), median, na.rm=TRUE)

bm_quants_pred <- apply(sapply(repIntTaxa, function(y) sapply(y, function(x) quantile(pred.data[as.character(x),"bodyMass"], probs=c(0, 0.25, 0.5, 0.75, 1.0), na.rm=TRUE)), simplify = "array"), c(1,2), median, na.rm=TRUE)

Determine which breaks were the most common

par(mfrow = c(2,1))
plotHistShiftinInterval(optList = optList_bm_allReps_ung,
                        intervals = intervals,
                        reps = 10000,
                        xaxp = c(70,0,14),
                        main = "Number of Replicates with a Body Mass Distribution Shift (Ungulate)",
                        xlab = "Time (Ma)",
                        xlim = c(65,0),
                        cex = 0.3,
                        col = "deepskyblue4",
                        border = "deepskyblue1",
                        do.subepochs = TRUE,
                        labels = TRUE,
                        freq=TRUE)
## Warning in plot.histogram(breakHist, col = NA, border = NA, labels =
## FALSE, : the AREAS in the plot are wrong -- rather use 'freq = FALSE'
## Warning in plot.histogram(breakHist, col = col, border = border, freq =
## freq, : the AREAS in the plot are wrong -- rather use 'freq = FALSE'
plotHistShiftinInterval(optList = optList_bm_allReps_pred,
                        intervals = intervals,
                        reps = 10000,
                        xaxp = c(70,0,14),
                        main = "Number of Replicates with a Body Mass Distribution Shift (Predator)",
                        xlab = "Time (Ma)",
                        xlim = c(65,0),
                        cex = 0.3,
                        col = "firebrick4",
                        border = "firebrick1",
                        do.subepochs = TRUE,
                        labels = TRUE,
                        freq=TRUE)
## Warning in plot.histogram(breakHist, col = NA, border = NA, labels =
## FALSE, : the AREAS in the plot are wrong -- rather use 'freq = FALSE'

## Warning in plot.histogram(breakHist, col = NA, border = NA, labels =
## FALSE, : the AREAS in the plot are wrong -- rather use 'freq = FALSE'

#quartz(width=6.89)
#par(mfrow=c(2,1), mar=c(4,4,0.5,0.5)) #, mgp=c(2, 1,0))
shoulderPlot(measure.mat = measure.mat, plot.y = "bodyMass", intervals = intervals, occs = occs, this.rank = "species", 
             bigList = bigList, shortFam = shortFam, repIntTaxa = repIntTaxa_ung, quants = bm_quants_ung,
             optList_bm_median = optList_bm_median_ung,  
             specOcc.col = "gray0", specOcc.alpha = 0.5,
             plot.breaks = TRUE,  break.text = FALSE, break.col = "blue4", #manual.breaks = c(62, 50, 46, 40, 34, 22, 4),
             ylab = "log bodymass (kg)", xlab = "Time (Ma)", xaxp = c(70,0,14), cex.axis = 1, cex.lab = 1, 
             do.subepochs = TRUE,  do.quants = TRUE,
             col.axis = "black", col.lab = "black", poly.col = "deepskyblue4", median.col = c("darkturquoise", "deepskyblue4", "deepskyblue1"))

#plotHistShiftinInterval(optList = optList_bm_allReps_ung,
#                        intervals = intervals,
#                        reps = 10000,
#                        xaxp = c(70,0,14),
#                        main = NULL,
#                        xlab = "Time (Ma)",
#                       xlim = c(65,0),
#                        cex = 0.5,
#                        col = "deepskyblue4",
#                        border = "deepskyblue1",
#                        do.subepochs = TRUE,
#                        labels = TRUE,
#                        freq=TRUE)
#quartz(width=6.89)
#par(mfrow=c(2,1), mar=c(4,4,0.5,0.5)) #, mgp=c(2, 1,0))
shoulderPlot(measure.mat = pred.data, plot.y = "bodyMass", intervals = intervals, occs = occs, this.rank = "species", 
             bigList = bigListPred, shortFam = shortFamPred, repIntTaxa = repIntTaxa_pred, quants = bm_quants_pred,
             optList_bm_median = optList_bm_median_pred,  #ylim = c(-0.5,  4),
             specOcc.col = "gray0", specOcc.alpha = 0.5,
             plot.breaks = TRUE,  break.text = FALSE, break.col = "firebrick4", #manual.breaks = c(57, 41, 25),
             ylab = "log Bodymass (kg)", xlab = "Time (Ma)", xaxp = c(75,0,15), cex.axis = 1, cex.lab = 1, 
             do.subepochs = TRUE,  do.quants = TRUE,
             col.axis = "black", col.lab = "black", poly.col = "darkorange4", median.col = c("goldenrod1", "darkorange4", "darkorange1"))

#plotHistShiftinInterval(optList = optList_bm_allReps_pred,
#                        intervals = intervals,
#                        reps = 10000,
#                        xaxp = c(70,0,14),
#                        main = "Number of Replicates with a Body Mass Distribution Shift (Predator)",
#                        xlab = "Time (Ma)",
#                        xlim = c(65,0),
#                        cex = 0.3,
#                        col = "firebrick4",
#                        border = "firebrick1",
#                        do.subepochs = TRUE,
#                        labels = TRUE,
#                        freq=TRUE)

Taxonomic Turnover

removed from current runs

#to properly siz eth eplot drag the plot window in rstudio to the point where source is on source and save when making new file to run this outside markdown
######1)copy this code to new untitled doc
######2)drag the plot window over to where soruce part of "source on save"
######3) run this code
######4) export as png

#quartz(width=6.89)
#par(mfrow=c(2,1), mar=c(4,4,0.5,0.5)) #, mgp=c(2, 1,0))
#par(bg=NA)
#taxCube <- sapply(repIntTaxa_ung, function(y) sapply(y, function(x) tabulate(match(bigList$family[as.character(bigList$accepted_name) %in% x], shortFam), nbins=length(shortFam)), simplify="array"), simplify="array")
#dimnames(taxCube) <- list(shortFam, rownames(intervals), NULL)

#prop_herb <- t(apply(taxCube, c(1,2), mean, na.rm=TRUE))
#   colnames(prop)[colnames(prop)==""] <- "indeterminate"
#dimnames(prop)[[2]] <-  shortFam

#lotStackedRichness(this.box=prop_herb, intervals=intervals, reorder.taxa = TRUE, do.log=FALSE, overlay.labels=FALSE, numbers.only=FALSE, legend=FALSE, xlim = c(65, min(intervals, na.rm=TRUE)))
#quartz(width=6.89)
#par(mfrow=c(2,1), mar=c(4,4,0.5,0.5)) #, mgp=c(2, 1,0))
#par(bg=NA)
#taxCube <- sapply(repIntTaxa_pred, function(y) sapply(y, function(x) tabulate(match(bigListPred$family[as.character(bigListPred$accepted_name) %in% x], shortFamPred), nbins=length(shortFamPred)), simplify="array"), simplify="array")
#dimnames(taxCube) <- list(shortFamPred, rownames(intervals), NULL)

#prop_pred <- t(apply(taxCube, c(1,2), mean, na.rm=TRUE))
#   colnames(prop)[colnames(prop)==""] <- "indeterminate"
#dimnames(prop)[[2]] <-  shortFamPred

#plotStackedRichness(this.box=prop_pred, intervals=intervals, reorder.taxa = TRUE, do.log=FALSE, overlay.labels=FALSE, numbers.only=FALSE, legend=FALSE, xlim = c(65, min(intervals, na.rm=TRUE)))

Bring in Predator Diet

Hypercarnivores

#diet.type <- c("hypercarnivore") #, "mesocarnivore", "hypocarnivore")

pred.diet <- read.csv("/Users/emdoughty/Dropbox/Proposal/Diet Data PPP CJ.csv")
pred.diet$MASTER_LIST <- gsub(pattern = "[[:space:]]", replacement = "_", x = pred.diet$MASTER_LIST)

pred.data.master  <- pred.data

pred.data <- pred.data[pred.data$taxon %in% pred.diet$MASTER_LIST,]
pred.data$Diet <- pred.diet[pred.diet$MASTER_LIST %in% pred.data$taxon, "PPP_diet_2"]

pred.data.hyper <- pred.data[pred.data$Diet %in% "hypercarnivore",]
pred.data.meso <- pred.data[pred.data$Diet %in% "mesocarnivore",]
pred.data.hypo <- pred.data[pred.data$Diet %in% "hypocarnivore",]

#write.csv(pred.data, "/Users/emdoughty/Dropbox/Proposal/DietCheck.csv")

check coverage of current diet dataset

Predators with diet designations are in red.

#par(mfrow=c(3,1))
pred.data.diet <- pred.data.hyper

plot(pred.data$max_ma, pred.data[,"bodyMass"], type="n", xlim = c(65,0))
overlayCzTimescale(do.subepochs= TRUE)

  for (i in seq_len(nrow(pred.data))) {
    if (is.finite(pred.data$max_ma[i]) & is.finite(pred.data$min_ma[i]) & pred.data$max_ma[i] != pred.data$min_ma[i]) lines(x=pred.data[i,c("max_ma","min_ma")], y=c(pred.data[,"bodyMass"][i], pred.data[,"bodyMass"][i]), lwd=0.75, pch=21) #alphaColor(orderColors[i], 0.5)
  }
  points(pred.data[complete.cases(pred.data[ ,c("max_ma","min_ma")]) & pred.data$max_ma== pred.data$min_ma, c("min_ma", "bodyMass")], pch=21, cex=0.25) #this line is not generating the proper output for the final graph due to c("FO","bodyMass") causing a  "undefined columns selected" error

    for (i in seq_len(nrow(pred.data.diet))) {
    if (is.finite(pred.data.diet$max_ma[i]) & is.finite(pred.data.diet$min_ma[i]) & pred.data.diet$max_ma[i] != pred.data.diet$min_ma[i]) lines(x=pred.data.diet[i,c("max_ma","min_ma")], y=c(pred.data.diet[,"bodyMass"][i], pred.data.diet[,"bodyMass"][i]), lwd=0.75, pch=21, col = "red") #alphaColor(orderColors[i], 0.5)
  }
  points(pred.data.diet[complete.cases(pred.data.diet[ ,c("max_ma","min_ma")]) & pred.data.diet$max_ma== pred.data.diet$min_ma, c("min_ma", "bodyMass")], pch=21, cex=0.25, col = "red") #this line is not generating   
  
  abline(h=log10(7), col = "black", lwd=2.5)

#par(mfrow=c(3,1))

pred.data.diet <- pred.data.meso

plot(pred.data$max_ma, pred.data[,"bodyMass"], type="n", xlim = c(65,0))
overlayCzTimescale(do.subepochs= TRUE)

  for (i in seq_len(nrow(pred.data))) {
    if (is.finite(pred.data$max_ma[i]) & is.finite(pred.data$min_ma[i]) & pred.data$max_ma[i] != pred.data$min_ma[i]) lines(x=pred.data[i,c("max_ma","min_ma")], y=c(pred.data[,"bodyMass"][i], pred.data[,"bodyMass"][i]), lwd=0.75, pch=21) #alphaColor(orderColors[i], 0.5)
  }
  points(pred.data[complete.cases(pred.data[ ,c("max_ma","min_ma")]) & pred.data$max_ma== pred.data$min_ma, c("min_ma", "bodyMass")], pch=21, cex=0.25) #this line is not generating the proper output for the final graph due to c("FO","bodyMass") causing a  "undefined columns selected" error

    for (i in seq_len(nrow(pred.data.diet))) {
    if (is.finite(pred.data.diet$max_ma[i]) & is.finite(pred.data.diet$min_ma[i]) & pred.data.diet$max_ma[i] != pred.data.diet$min_ma[i]) lines(x=pred.data.diet[i,c("max_ma","min_ma")], y=c(pred.data.diet[,"bodyMass"][i], pred.data.diet[,"bodyMass"][i]), lwd=0.75, pch=21, col = "blue") #alphaColor(orderColors[i], 0.5)
  }
  points(pred.data.diet[complete.cases(pred.data.diet[ ,c("max_ma","min_ma")]) & pred.data.diet$max_ma== pred.data.diet$min_ma, c("min_ma", "bodyMass")], pch=21, cex=0.25, col = "blue") #this line is not generating   
  
  abline(h=log10(7), col = "black", lwd=2.5)

#par(mfrow=c(3,1))

pred.data.diet <- pred.data.hypo

plot(pred.data$max_ma, pred.data[,"bodyMass"], type="n", xlim = c(65,0))
overlayCzTimescale(do.subepochs= TRUE)

  for (i in seq_len(nrow(pred.data))) {
    if (is.finite(pred.data$max_ma[i]) & is.finite(pred.data$min_ma[i]) & pred.data$max_ma[i] != pred.data$min_ma[i]) lines(x=pred.data[i,c("max_ma","min_ma")], y=c(pred.data[,"bodyMass"][i], pred.data[,"bodyMass"][i]), lwd=0.75, pch=21) #alphaColor(orderColors[i], 0.5)
  }
  points(pred.data[complete.cases(pred.data[ ,c("max_ma","min_ma")]) & pred.data$max_ma== pred.data$min_ma, c("min_ma", "bodyMass")], pch=21, cex=0.25) #this line is not generating the proper output for the final graph due to c("FO","bodyMass") causing a  "undefined columns selected" error

    for (i in seq_len(nrow(pred.data.diet))) {
    if (is.finite(pred.data.diet$max_ma[i]) & is.finite(pred.data.diet$min_ma[i]) & pred.data.diet$max_ma[i] != pred.data.diet$min_ma[i]) lines(x=pred.data.diet[i,c("max_ma","min_ma")], y=c(pred.data.diet[,"bodyMass"][i], pred.data.diet[,"bodyMass"][i]), lwd=0.75, pch=21, col = "green") #alphaColor(orderColors[i], 0.5)
  }
  points(pred.data.diet[complete.cases(pred.data.diet[ ,c("max_ma","min_ma")]) & pred.data.diet$max_ma== pred.data.diet$min_ma, c("min_ma", "bodyMass")], pch=21, cex=0.25, col = "green") #this line is not generating   
  
  abline(h=log10(7), col = "black", lwd=2.5)

#constrain intervals to be Oligocene the present

intervals <- intervals[intervals$ageBase <= 34,]

repIntTaxa_master <- repIntTaxa
repIntTaxa <- lapply(repIntTaxa, function(this.rep) {this.rep[rownames(intervals)]})

Functional Diversity Through Time

Hypercarnivores

pred.data <- pred.data.hyper

rem.col <- c("family","genus","reg.vec", "diet")
pred.data <- pred.data[,!colnames(pred.data) %in% rem.col]

countCube_pred <- sapply(repIntTaxa, function(this.rep) {
  sapply(this.rep, function(this.intv, this.rep) {
    hist(pred.data[,"bodyMass"][match(this.intv, pred.data$taxon)], 
         breaks= bmBreaks_pred, plot=FALSE)$counts
  }, this.rep=this.rep)
}, simplify = "array")

#countCube <- countCube[,,1]

sizecateg <- c("<1kg",
               "1kg to 7kg",
               "7kg to 21kg", 
               "21kg to 100kg",
               ">100kg")

dimnames(countCube_pred) <- list(sizecateg, rownames(intervals), NULL)
#quartz(width=6.89)
#par(mfrow=c(2,1), mar=c(4,4,1.6,4), mgp=c(2, 1,0)) #, height = 2.15, width = 8.21)

    prop_pred_hyper<- t(apply(countCube_pred, c(1,2), mean, na.rm=TRUE))
        colnames(prop_pred_hyper)[colnames(prop_pred_hyper)==""] <- "indeterminate"
        # dimnames(prop) <- list(rownames(intervals), shortFam)
        plotStackedRichness(this.box=prop_pred_hyper, intervals=intervals, reorder.taxa = FALSE, do.log=FALSE, overlay.labels=FALSE, numbers.only=FALSE, legend=FALSE, xlim = c(65, min(intervals, na.rm=TRUE)), ylim = c(0, 35))

Mesocarnivores

pred.data <- pred.data.meso

rem.col <- c("family","genus","reg.vec", "diet")
pred.data <- pred.data[,!colnames(pred.data) %in% rem.col]

countCube_pred <- sapply(repIntTaxa, function(this.rep) {
  sapply(this.rep, function(this.intv, this.rep) {
    hist(pred.data[,"bodyMass"][match(this.intv, pred.data$taxon)], 
         breaks= bmBreaks_pred, plot=FALSE)$counts
  }, this.rep=this.rep)
}, simplify = "array")

#countCube <- countCube[,,1]

sizecateg <- c("<1kg",
               "1kg to 7kg",
               "7kg to 21kg", 
               "21kg to 100kg",
               ">100kg")

dimnames(countCube_pred) <- list(sizecateg, rownames(intervals), NULL)
#quartz(width=6.89)
#par(mfrow=c(2,1), mar=c(4,4,1.6,4), mgp=c(2, 1,0)) #, height = 2.15, width = 8.21)

    prop_pred_meso<- t(apply(countCube_pred, c(1,2), mean, na.rm=TRUE))
        colnames(prop_pred_meso)[colnames(prop_pred_meso)==""] <- "indeterminate"
        # dimnames(prop) <- list(rownames(intervals), shortFam)
        plotStackedRichness(this.box=prop_pred_meso, intervals=intervals, reorder.taxa = FALSE, do.log=FALSE, overlay.labels=FALSE, numbers.only=FALSE, legend=FALSE, xlim = c(65, min(intervals, na.rm=TRUE)), ylim = c(0,35))

Hypocarnivores

pred.data <- pred.data.hypo

rem.col <- c("family","genus","reg.vec", "diet")
pred.data <- pred.data[,!colnames(pred.data) %in% rem.col]

countCube_pred <- sapply(repIntTaxa, function(this.rep) {
  sapply(this.rep, function(this.intv, this.rep) {
    hist(pred.data[,"bodyMass"][match(this.intv, pred.data$taxon)], 
         breaks= bmBreaks_pred, plot=FALSE)$counts
  }, this.rep=this.rep)
}, simplify = "array")

#countCube <- countCube[,,1]

sizecateg <- c("<1kg",
               "1kg to 7kg",
               "7kg to 21kg", 
               "21kg to 100kg",
               ">100kg")

dimnames(countCube_pred) <- list(sizecateg, rownames(intervals), NULL)
#quartz(width=6.89)
#par(mfrow=c(2,1), mar=c(4,4,1.6,4), mgp=c(2, 1,0)) #, height = 2.15, width = 8.21)

    prop_pred_hypo<- t(apply(countCube_pred, c(1,2), mean, na.rm=TRUE))
        colnames(prop_pred_hypo)[colnames(prop_pred_hypo)==""] <- "indeterminate"
        # dimnames(prop) <- list(rownames(intervals), shortFam)
        plotStackedRichness(this.box=prop_pred_hypo, intervals=intervals, reorder.taxa = FALSE, do.log=FALSE, overlay.labels=FALSE, numbers.only=FALSE, legend=FALSE, xlim = c(65, min(intervals, na.rm=TRUE)), ylim = c(0,35))

Correlation Matrices

Hypercarnivores

“mean” correlations

prop_herb_master <- prop_herb

prop_herb <- prop_herb[rownames(prop_herb) %in% rownames(intervals),]

ungulates <- prop_herb
predators <- prop_pred_hyper

all.val <- cbind(predators, ungulates)

corr.results.both <- cor(predators, ungulates, method = "spearman")
cor.p <- cor.mtest(all.val)$p

cor.p.culled <- cor.p[,colnames(cor.p) %in% colnames(ungulates)]
cor.p.culled <- cor.p.culled[rownames(cor.p.culled) %in% colnames(predators),]

corrplot::corrplot(corr.results.both,  mar = c(1,1,1,1), p.mat = cor.p.culled, #insig = "blank",
                   cl.align.text = 'l', addCoef.col = 'black')

mtext("Large Herbivore", side = 3, line = -3, cex = 1.5)
mtext("Predator", side = 2, adj = 0.6, line = 0, cex = 1.5)

First Differences Correlation

pred.prey.DivFirstDiff <- getDiversity1stDiff(data.mat = t(prop_pred_hyper), intervals = intervals)

UngualteBMGroupDiv_FirstDiff <- getDiversity1stDiff(data.mat = t(prop_herb), intervals = intervals)

#UngualteBMGroupDiv_FirstDiff

#pred.prey.DivFirstDiff

#should make list of plots of each catagpry through time to make sure data is stationary

ungulates <- t(as.matrix(UngualteBMGroupDiv_FirstDiff))
predators <- t(as.matrix(pred.prey.DivFirstDiff))

all.val <- cbind(predators, ungulates)

corr.results.both <- cor(predators, ungulates, method = "spearman")
cor.p <- cor.mtest(all.val)$p

cor.p.culled <- cor.p[,colnames(cor.p) %in% colnames(ungulates)]
cor.p.culled <- cor.p.culled[rownames(cor.p.culled) %in% colnames(predators),]

corrplot::corrplot(corr.results.both,  mar = c(1,1,1,1), p.mat = cor.p.culled, #insig = "blank",
                   cl.align.text = 'l', addCoef.col = 'black')

mtext("Large Herbivore", side = 3, line = -3, cex = 1.5)
mtext("Predator", side = 2, adj = 0.6, line = 0, cex = 1.5)

Mesocarnivores

“mean” correlations

ungulates <- prop_herb
predators <- prop_pred_meso

all.val <- cbind(predators, ungulates)

corr.results.both <- cor(predators, ungulates, method = "spearman")
cor.p <- cor.mtest(all.val)$p

cor.p.culled <- cor.p[,colnames(cor.p) %in% colnames(ungulates)]
cor.p.culled <- cor.p.culled[rownames(cor.p.culled) %in% colnames(predators),]

corrplot::corrplot(corr.results.both,  mar = c(1,1,1,1), p.mat = cor.p.culled, #insig = "blank",
                   cl.align.text = 'l', addCoef.col = 'black')

mtext("Large Herbivore", side = 3, line = -3, cex = 1.5)
mtext("Predator", side = 2, adj = 0.6, line = 0, cex = 1.5)

First Differences Correlation

pred.prey.DivFirstDiff <- getDiversity1stDiff(data.mat = t(prop_pred_meso), intervals = intervals)

UngualteBMGroupDiv_FirstDiff <- getDiversity1stDiff(data.mat = t(prop_herb), intervals = intervals)

#UngualteBMGroupDiv_FirstDiff

#pred.prey.DivFirstDiff

#should make list of plots of each catagpry through time to make sure data is stationary

ungulates <- t(as.matrix(UngualteBMGroupDiv_FirstDiff))
predators <- t(as.matrix(pred.prey.DivFirstDiff))

all.val <- cbind(predators, ungulates)

corr.results.both <- cor(predators, ungulates, method = "spearman")
cor.p <- cor.mtest(all.val)$p

cor.p.culled <- cor.p[,colnames(cor.p) %in% colnames(ungulates)]
cor.p.culled <- cor.p.culled[rownames(cor.p.culled) %in% colnames(predators),]

corrplot::corrplot(corr.results.both,  mar = c(1,1,1,1), p.mat = cor.p.culled, #insig = "blank",
                   cl.align.text = 'l', addCoef.col = 'black')

mtext("Large Herbivore", side = 3, line = -3, cex = 1.5)
mtext("Predator", side = 2, adj = 0.6, line = 0, cex = 1.5)

Hypocarnivores

“mean” correlations

ungulates <- prop_herb
predators <- prop_pred_hypo

all.val <- cbind(predators, ungulates)

corr.results.both <- cor(predators, ungulates, method = "spearman")
## Warning in cor(predators, ungulates, method = "spearman"): the standard
## deviation is zero
cor.p <- cor.mtest(all.val)$p
## Warning in cor(x, y): the standard deviation is zero
## Warning in cor(x, y): the standard deviation is zero

## Warning in cor(x, y): the standard deviation is zero

## Warning in cor(x, y): the standard deviation is zero

## Warning in cor(x, y): the standard deviation is zero

## Warning in cor(x, y): the standard deviation is zero

## Warning in cor(x, y): the standard deviation is zero

## Warning in cor(x, y): the standard deviation is zero

## Warning in cor(x, y): the standard deviation is zero
cor.p.culled <- cor.p[,colnames(cor.p) %in% colnames(ungulates)]
cor.p.culled <- cor.p.culled[rownames(cor.p.culled) %in% colnames(predators),]

corrplot::corrplot(corr.results.both,  mar = c(1,1,1,1), p.mat = cor.p.culled, #insig = "blank",
                   cl.align.text = 'l', addCoef.col = 'black')

mtext("Large Herbivore", side = 3, line = -3, cex = 1.5)
mtext("Predator", side = 2, adj = 0.6, line = 0, cex = 1.5)

First Differences Correlation

pred.prey.DivFirstDiff <- getDiversity1stDiff(data.mat = t(prop_pred_hypo), intervals = intervals)

UngualteBMGroupDiv_FirstDiff <- getDiversity1stDiff(data.mat = t(prop_herb), intervals = intervals)

#UngualteBMGroupDiv_FirstDiff

#pred.prey.DivFirstDiff

#should make list of plots of each catagpry through time to make sure data is stationary

ungulates <- t(as.matrix(UngualteBMGroupDiv_FirstDiff))
predators <- t(as.matrix(pred.prey.DivFirstDiff))

all.val <- cbind(predators, ungulates)

corr.results.both <- cor(predators, ungulates, method = "spearman")
## Warning in cor(predators, ungulates, method = "spearman"): the standard
## deviation is zero
cor.p <- cor.mtest(all.val)$p
## Warning in cor(x, y): the standard deviation is zero
## Warning in cor(x, y): the standard deviation is zero

## Warning in cor(x, y): the standard deviation is zero

## Warning in cor(x, y): the standard deviation is zero

## Warning in cor(x, y): the standard deviation is zero

## Warning in cor(x, y): the standard deviation is zero

## Warning in cor(x, y): the standard deviation is zero

## Warning in cor(x, y): the standard deviation is zero

## Warning in cor(x, y): the standard deviation is zero
cor.p.culled <- cor.p[,colnames(cor.p) %in% colnames(ungulates)]
cor.p.culled <- cor.p.culled[rownames(cor.p.culled) %in% colnames(predators),]

corrplot::corrplot(corr.results.both,  mar = c(1,1,1,1), p.mat = cor.p.culled, #insig = "blank",
                   cl.align.text = 'l', addCoef.col = 'black')

mtext("Large Herbivore", side = 3, line = -3, cex = 1.5)
mtext("Predator", side = 2, adj = 0.6, line = 0, cex = 1.5)

Handley Analyssi for Diet Categories

Hypercarnivore

if(interval.type %in% "bins") load("/Users/emdoughty/Dropbox/Code/R/Results/BM_handleyResult_carnivores_allCateg_hypercarnivores_this.rank=species_timebin=2Mabins_start=34_end=0_SampleStandardized=TRUE_Reps=10000Jonathans_MBP.lan##------ Fri Mar 11 12:00:42 2022 ------##.Rdata")
#/Users/emdoughty/Dropbox/Code/R/Results/BM_handleyResult_carnivores_allCateg_this.rank=species_timebin=2Mabins_start=64Ma_end=0Ma_SampleStandardized=TRUE_Reps=10000Jonathans_MBP.lan##------ Sat Mar  5 03:39:27 2022 ------##.Rdata")

if(interval.type %in% "nalma") load("/Users/emdoughty/Dropbox/Code/R/Results/BM_handleyResult_carnivores_allCateg_hypercarnivore__this.rank=species_timebin=nalma_SampleStandardized=TRUE_Reps=10000Jonathans_MBP.lan##------ Fri Mar 11 18:33:06 2022 ------##.Rdata")
#countCube_pred <- countCube
optList_bm_median_pred_hyper <- optList_bm_median
optList_bm_allReps_pred_hyper <- optList_bm_allReps

bm_quants_pred_hyper <- apply(sapply(repIntTaxa, function(y) sapply(y, function(x) quantile(pred.data.hyper[as.character(x),"bodyMass"], probs=c(0, 0.25, 0.5, 0.75, 1.0), na.rm=TRUE)), simplify = "array"), c(1,2), median, na.rm=TRUE)
if(interval.type %in% "bins") load("/Users/emdoughty/Dropbox/Code/R/Results/BM_handleyResult_carnivores_allCateg_mesocarnivore__this.rank=species_timebin=2Mabins_start=34_end=0_SampleStandardized=TRUE_Reps=10000Jonathans_MBP.lan##------ Fri Mar 11 14:17:49 2022 ------##.Rdata")
#/Users/emdoughty/Dropbox/Code/R/Results/BM_handleyResult_carnivores_allCateg_this.rank=species_timebin=2Mabins_start=64Ma_end=0Ma_SampleStandardized=TRUE_Reps=10000Jonathans_MBP.lan##------ Sat Mar  5 03:39:27 2022 ------##.Rdata")

if(interval.type %in% "nalma") load("/Users/emdoughty/Dropbox/Code/R/Results/BM_handleyResult_carnivores_allCateg_mesocarnivore__this.rank=species_timebin=nalma_SampleStandardized=TRUE_Reps=10000Jonathans_MBP.lan##------ Fri Mar 11 19:32:24 2022 ------##.Rdata")
#countCube_pred <- countCube
optList_bm_median_pred_meso <- optList_bm_median
optList_bm_allReps_pred_meso <- optList_bm_allReps

bm_quants_pred_meso <- apply(sapply(repIntTaxa, function(y) sapply(y, function(x) quantile(pred.data.meso[as.character(x),"bodyMass"], probs=c(0, 0.25, 0.5, 0.75, 1.0), na.rm=TRUE)), simplify = "array"), c(1,2), median, na.rm=TRUE)
if(interval.type %in% "bins") load("/Users/emdoughty/Dropbox/Code/R/Results/BM_handleyResult_carnivores_allCateg_hypocarnivore__this.rank=species_timebin=2Mabins_start=34_end=0_SampleStandardized=TRUE_Reps=10000Jonathans_MBP.lan##------ Fri Mar 11 17:18:18 2022 ------##.Rdata")
#/Users/emdoughty/Dropbox/Code/R/Results/BM_handleyResult_carnivores_allCateg_this.rank=species_timebin=2Mabins_start=64Ma_end=0Ma_SampleStandardized=TRUE_Reps=10000Jonathans_MBP.lan##------ Sat Mar  5 03:39:27 2022 ------##.Rdata")

if(interval.type %in% "nalma") load("/Users/emdoughty/Dropbox/Code/R/Results/BM_handleyResult_carnivores_allCateg_hypocarnivore__this.rank=species_timebin=nalma_SampleStandardized=TRUE_Reps=10000Jonathans_MBP.lan##------ Fri Mar 11 20:11:56 2022 ------##.Rdata")
#countCube_pred <- countCube
optList_bm_median_pred_hypo <- optList_bm_median
optList_bm_allReps_pred_hypo <- optList_bm_allReps

bm_quants_pred_hypo <- apply(sapply(repIntTaxa, function(y) sapply(y, function(x) quantile(pred.data.hypo[as.character(x),"bodyMass"], probs=c(0, 0.25, 0.5, 0.75, 1.0), na.rm=TRUE)), simplify = "array"), c(1,2), median, na.rm=TRUE)
repIntTaxa <-  repIntTaxa_master
repIntTaxa <- lapply(repIntTaxa, function(this.rep) {this.rep[rownames(intervals)]})
#quartz(width=6.89)
#par(mfrow=c(2,1), mar=c(4,4,0.5,0.5)) #, mgp=c(2, 1,0))
shoulderPlot(measure.mat = pred.data.hyper, plot.y = "bodyMass", intervals = intervals, occs = occs, this.rank = "species", 
             bigList = bigListPred, shortFam = shortFamPred, repIntTaxa = repIntTaxa, quants = bm_quants_pred_hyper,
             optList_bm_median = optList_bm_median_pred_hyper,  xlim = c(65, 0), ylim = c(-1,  2.75),
             specOcc.col = "gray0", specOcc.alpha = 0.5,
             plot.breaks = TRUE,  break.text = FALSE, break.col = "firebrick4", #manual.breaks = c(57, 41, 25),
             ylab = "log Bodymass (kg)", xlab = "Time (Ma)", xaxp = c(75,0,15), cex.axis = 1, cex.lab = 1, 
             do.subepochs = TRUE,  do.quants = TRUE,
             col.axis = "black", col.lab = "black", poly.col = "darkorange4", median.col = c("goldenrod1", "darkorange4", "darkorange1"))

#quartz(width=6.89)
#par(mfrow=c(2,1), mar=c(4,4,0.5,0.5)) #, mgp=c(2, 1,0))
shoulderPlot(measure.mat = pred.data.meso, plot.y = "bodyMass", intervals = intervals, occs = occs, this.rank = "species", 
             bigList = bigListPred, shortFam = shortFamPred, repIntTaxa = repIntTaxa, quants = bm_quants_pred_meso,
             optList_bm_median = optList_bm_median_pred_meso,  xlim = c(65, 0), ylim = c(-1,  2.75),
             specOcc.col = "gray0", specOcc.alpha = 0.5,
             plot.breaks = TRUE,  break.text = FALSE, break.col = "firebrick4", #manual.breaks = c(57, 41, 25),
             ylab = "log Bodymass (kg)", xlab = "Time (Ma)", xaxp = c(75,0,15), cex.axis = 1, cex.lab = 1, 
             do.subepochs = TRUE,  do.quants = TRUE,
             col.axis = "black", col.lab = "black", poly.col = "darkorange4", median.col = c("goldenrod1", "darkorange4", "darkorange1"))

#quartz(width=6.89)
#par(mfrow=c(2,1), mar=c(4,4,0.5,0.5)) #, mgp=c(2, 1,0))
shoulderPlot(measure.mat = pred.data.hypo, plot.y = "bodyMass", intervals = intervals, occs = occs, this.rank = "species", 
             bigList = bigListPred, shortFam = shortFamPred, repIntTaxa = repIntTaxa, quants = bm_quants_pred_hypo,
             optList_bm_median = optList_bm_median_pred_hypo, xlim = c(65, 0), ylim = c(-1,  2.75),
             specOcc.col = "gray0", specOcc.alpha = 0.5,
             plot.breaks = TRUE,  break.text = FALSE, break.col = "firebrick4", #manual.breaks = c(57, 41, 25),
             ylab = "log Bodymass (kg)", xlab = "Time (Ma)", xaxp = c(75,0,15), cex.axis = 1, cex.lab = 1, 
             do.subepochs = TRUE,  do.quants = TRUE,
             col.axis = "black", col.lab = "black", poly.col = "darkorange4", median.col = c("goldenrod1", "darkorange4", "darkorange1"))

test code to make bins for both body mass and diet

bmBreaks_pred
## [1]     -Inf 0.000000 0.845098 1.322219 2.000000      Inf
pred.diet <- c("hypercarnivore", "mesocarnivore", "hypocarnivore")